【问题标题】:Tablednd - using returned JSON data in tableTablednd - 在表中使用返回的 JSON 数据
【发布时间】:2023-03-17 10:20:01
【问题描述】:

我正在改进愿望清单插件,以便用户可以通过拖放更改表格的顺序。

我有 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 数据来完成它。任何方向都将不胜感激,因为我觉得我已经用尽了所有可能的谷歌搜索,并且认为我一定是在某个地方弄错了。

非常感谢您的任何回答, 佩西

【问题讨论】:

    标签: jquery json ajax wordpress tablednd


    【解决方案1】:

    我认为关键是了解您目前如何在数据库中存储项目的顺序。例如,如果您有一个名为 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\"]}
    

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

    我希望这会有所帮助!

    【讨论】:

    • 哦,伙计,谢谢。这对我来说很有意义。我一直在努力完全弄清楚最终结果需要是什么,而你已经完美地清除了它。非常感谢您抽出宝贵时间提供帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 2012-06-24
    相关资源
    最近更新 更多