首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tablednd -在表中使用返回的JSON数据

Tablednd -在表中使用返回的JSON数据
EN

Stack Overflow用户
提问于 2019-02-08 15:41:51
回答 1查看 267关注 0票数 0

我正在对一个愿望列表插件进行改进,这样用户就可以通过拖放更改表的顺序。

我让jQuery Tablednd在ajax调用后返回JSON数据,它正在工作。但是,我实在想不出如何处理json数据,这样页面就会在刷新时返回更新的列表。我希望有人能把我推向正确的方向,因为我认为我在寻找错误的条件。我使用Wordpress,所以对AJAX的调用使用的是操作,

代码语言:javascript
复制
<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

代码语言:javascript
复制
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

代码语言:javascript
复制
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();
}

导致#反馈

代码语言:javascript
复制
{\"tinvwl-sort\":[\"153\",\"152\",\"151\"]}

我知道我需要将这些数据保存到数据库中,但是很难找到如何使用创建的JSON数据来实现。任何方向都会被感激,因为我觉得我已经用尽了每一个谷歌搜索可能,并认为我一定是搞错了什么地方。

谢谢你的回答,佩尔西

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-09 20:01:35

我认为关键是了解您目前如何将项目的顺序存储在数据库中。例如,如果您有一个名为items的SQL表,您可以这样排列它:

代码语言:javascript
复制
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列,如下所示:

代码语言:javascript
复制
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"

一旦得到了这些信息,就可以通过将ORDER BY Order添加到SQL查询中,轻松地确保按优先顺序显示项。

但是现在您可以做的是,假设您从您的表中得到了JSON,

代码语言:javascript
复制
{\"tinvwl-sort\":[\"153\",\"152\",\"151\"]}

是更新order列的值,以便153个-> 1,152个-> 2,151个-> 3。然后当您下一次在愿望列表中获取项目时,它们将按照新的顺序。您可以在PHP中使用json_decode($order),然后将有一个具有tinvwl-sort属性的对象,其值是按所需的顺序排列的数组。

我希望这能帮到你!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54595816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档