我正在使用 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();
}
});
});
},