无法使用Ajax将数据加载到表中

时间:2018-10-30 14:14:47

标签: tabulator

我确实很难将现有代码从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 :(得分:1)

默认情况下,制表器将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对象并设置适当的标头。

在版本4.1中添加了 ajaxContentType 选项,以使用户可以更轻松地将请求发送回具有各种内容类型的服务器