Не удается загрузить данные в таблицу с помощью AJAX - PullRequest
0 голосов
/ 30 октября 2018

Мне действительно сложно обновить существующий код с 3.5 до 4.0.5. На этот раз я сталкиваюсь с ошибкой, когда пытаюсь загрузить данные в свою таблицу с помощью вызовов ajax. Это сработало в 3.5, так что я думаю, что что-то изменилось в версии 4. Я внимательно прочитал документацию и прочитал руководство по обновлению. Были ли изменения в способе выполнения вызовов ajax, чтобы мой код не работал так, как в 3.5? Напоследок: я использую оболочку для jquery.

Конструктор таблицы выглядит так:

$("#PO-table").tabulator({
...columns etc
ajaxResponse: function (url, params, response) {


                        //url - the URL of the request
                        //params - the parameters passed with the request
                        //response - the JSON object returned in the body of the response.

                        return response.d; //Return the d Property Of a response json Object
                    },
});

Затем я установил данные, добавив множество параметров, а также ранее объявленный ajaxconfig

var ajaxConfig = {
                type: "POST", //set request type to Position
                contentType: 'application/json; charset=utf-8', //set specific content type
            };

$("#PO-table").tabulator("setData", "PurchaseOrder.aspx/Fetch_PurchaseOrders", "{'POnum': '" + ponum + "', 'supplier': '" + supp + "', 'fromDate': '" + from + "', 'toDate': '" + to + "', 'spareNumber': '" + spare + "', 'isDelivered': '" + isdelivered + "', 'isConfirmedOrder': '" + true + "', 'isUnconfirmedOrder': '" + true + "', 'isExactPOnum': '" + false + "', 'isExactSupp': '" + false + "'}", ajaxConfig); 

Затем я получаю сообщение об ошибке в консоли, и данные не загружаются в таблицу: enter image description here

1 Ответ

0 голосов
/ 31 октября 2018

По умолчанию Tabulator будет отправлять данные в запросах POST как данные формы, если вы хотите отправить их как JSON, вам нужно будет использовать ajaxContentType опция

var table = new Tabulator("#example-table", {
    ajaxURL:"http://www.getmydata.com/now", //ajax URL
    ajaxConfig:"POST", //ajax HTTP request type
    ajaxContentType:"json", // send parameters to the server as a JSON encoded string
});

Это закодирует данные как объект JSON и установит соответствующие заголовки.

Опция ajaxContentType была добавлена ​​в версии 4.1, чтобы упростить пользователям отправку запросов обратно на их серверы с различными типами контента

...