来自Ajax调用的JQuery Jtable负载JSON



我正在使用 jtable.org-s库在表中显示行。对于填充行,我使用的是listAction

actions: {
  listAction: '/Passengers/Search'
},

此URL返回有效的JSON,一切正常。但是我想从Ajax手动调用URL,因为此URL返回的信息比行还要多。它还返回我需要的其他表单元素所需的信息,例如搜索结果项目计数,女性/男人比例等。

所以,我想打电话给我,然后加载对我的 jtable的响应:

$.ajax({
  url: '/Passengers/Search',
  type: 'POST',
  data: {},
  success: function(data) {
    // here I would like to inject the Json(data) to my table
  }
});

abpatil建议的答案是一个很好的答案。

一个简单的解决方案可能是使用JTable recordsLoaded事件http://jtable.org/apireference/events#event-recordsloaded

为处理程序提供了一个具有两个组件的事件数据对象。data.records是服务器发送的所有记录的数组,而data.serverResponse是服务器的完整JSON响应。

您可以循环浏览记录并处理任何额外的字段。

服务器还可以发送JTable未使用的额外JSON属性,您可以在此处处理data.serverResponse并在其他页面元素中使用它们。

您可以使用jQuery-jtable的函数扰动功能。
在AJAX成功过滤器中,您可以过滤您的响应数据,并且通过使用$dfd.resolve(data);,您可以将过滤的数据加载到jQuery-jtable。<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<br/>例如:

listAction: function (postData, jtParams) {
                    console.log("Loading from custom function...");
                    return $.Deferred(function ($dfd) {
                        $.ajax({
                            url: '/Demo/StudentList?jtStartIndex=' + jtParams.jtStartIndex + '&jtPageSize=' + jtParams.jtPageSize + '&jtSorting=' + jtParams.jtSorting,
                            type: 'POST',
                            dataType: 'json',
                            data: postData,
                            success: function (data) {
                                //filter your data here and then pass filtered data to $dfd.resolve function
                                $dfd.resolve(data);
                            },
                            error: function () {
                                $dfd.reject();
                            }
                        });
                    });
                },

最新更新