Tablednd - использование возвращаемых данных JSON в таблице - PullRequest
0 голосов
/ 08 февраля 2019

Я делаю улучшения в плагине списка желаний, чтобы пользователь мог изменять порядок таблицы путем перетаскивания.

У меня есть jQuery Tablednd, работающий с JSON данные возвращаются после моего вызова ajax, и он работает.Но я действительно не могу понять, что делать с данными 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();
}

Результат # обратной связи

{\"tinvwl-sort\":[\"153\",\"152\",\"151\"]}

Я знаю, что мне нужно сохранить эти данные в базе данных, но я не могу понять, как я могу использовать созданные данные JSON для этого.Любое направление будет оценено как чувство, что я исчерпал каждый возможный поиск в Google и думаю, что должен где-то получить неправильный конец флешки.

Большое спасибо за любой ответ, Peersy

1 Ответ

0 голосов
/ 09 февраля 2019

Я думаю, ключ к пониманию того, как вы храните порядок элементов в вашей БД в данный момент.Например, если у вас есть таблица SQL с именем items, вы можете расположить ее следующим образом:

ID, OwnerID, ItemDescription
151, 543, "Visit Niagara Falls"
152, 543, "Visit London"
153, 543, "Visit Mumbia"
154, 989, "Eat ice-cream in Venice"

Тогда, к сожалению, вы не сохраняете порядок элементов и порядок, в котором они будутбудет отображаться как «неопределенный», то есть это может быть любой порядок (или, вероятно, просто в порядке идентификатора, который, вероятно, будет порядком, в котором они были созданы.

Так что вам нужно добавить новый столбец 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"

Как только вы это получите, вы можете легко убедиться, что отображаете элементы в порядке предпочтения, добавив ORDER BY Order к вашему SQL-запросу.

Но что вы можете сделать сейчассделайте, если вы получите обратно JSON из таблицы, как вы показали,

{\"tinvwl-sort\":[\"153\",\"152\",\"151\"]}

обновит значения столбца заказа так, чтобы 153 -> 1, 152 -> 2, 151 -> 3. Затемкогда вы в следующий раз выберете элементы в списке желаний, они будут в новом порядке. Вы можете использовать json_decode($order) в PHP, и тогда у вас будет объект со свойством tinvwl-sort, значением которого является массив в заказе.вам это нужно.

Надеюсь, это поможет!

...