我正在对愿望清单插件进行改进,以便用户可以通过拖放来更改表格的顺序。
我有 jQuery Tablednd,并且在我的Ajax调用之后返回了 JSON 数据,并且该数据正常运行。但是我真的无法理解如何处理json数据,以便页面在刷新时返回更新列表。我希望有人可以按正确的方向推动我,因为我认为自己正在寻找错误的术语。我正在使用Wordpress,因此对 AJAX 的调用正在使用操作,
表
<table id="tinvwl-sort" class="tinvwl-table-manage-list">
<tbody>
<tr id="153" style="cursor: move; display: table-row;">
item 1 - many columns of data
</tr>
<tr id="152" style="cursor: move;">
item 2 - many columns of data
</tr>
<tr id="151" style="cursor: move;">
item 3 - many columns of data
</tr>
</tbody>
</table>
<div id="feedback"></div>
Jquery
jQuery("#tinvwl-sort").tableDnD({
onDrop: function(table, row) {
var serial = jQuery.tableDnD.jsonize();
// This does the ajax request
jQuery.ajax({
url: example_ajax_obj.ajaxurl,
data: {
'action': 'example_ajax_request',
'order' : serial
},
success:function(data) {
console.log(data);
jQuery("#feedback").html(data);
},
error: function(errorThrown){
console.log(errorThrown);
}
});
AJAX PHP
function example_ajax_request() {
// The $_REQUEST contains all the data sent via ajax
if ( isset($_REQUEST) ) {
$order = $_REQUEST['order'];
// Let's take the data that was sent and do something with it
echo $order;
}
die();
}
导致#feedback
{\"tinvwl-sort\":[\"153\",\"152\",\"151\"]}
我知道我需要将这些数据保存到数据库中,但是努力找出如何使用创建的JSON数据来做到这一点。任何方向将不胜感激,因为我觉得我已经穷尽了所有Google搜索,并认为我必须在某个地方犯错。
非常感谢您的回答, Peersy
答案 0 :(得分:0)
我认为关键是要了解当前如何在数据库中存储项目的顺序。例如,如果您有一个名为items
的SQL表,则可以这样排列:
ID, OwnerID, ItemDescription
151, 543, "Visit Niagara Falls"
152, 543, "Visit London"
153, 543, "Visit Mumbia"
154, 989, "Eat ice-cream in Venice"
那么不幸的是,您没有存储项目的顺序,因此它们的显示顺序将是“未定义的”,即可以是任何顺序(或者可能只是ID顺序,这可能是它们创建的顺序)他们进来。
因此您必须添加一个新的Order
列,如下所示:
ID, OwnerID, Order, ItemDescription
151, 543, 1, "Visit Niagara Falls"
152, 543, 2, "Visit London"
153, 543, 3, "Visit Mumbia"
154, 989, 1, "Eat ice-cream in Venice"
一旦了解了这一点,就可以通过向SQL查询中添加ORDER BY Order
来轻松确保以优先顺序显示项目。
但是,假设您从显示的表中获取了JSON,现在可以做什么
{\"tinvwl-sort\":[\"153\",\"152\",\"151\"]}
将更新订单列的值,以便153-> 1,152-> 2,151->3。然后,当您下一次获取愿望列表中的项目时,它们将处于新的顺序。您可以在PHP中使用json_decode($order)
,然后将获得一个具有tinvwl-sort
属性的对象,该对象的值是按所需顺序排列的数组。
我希望这会有所帮助!