我作为knockout.js
网格的一部分继承了以下内容。
单击图像输入时,它会使用搜索结果填充网格。
如果服务器超时(例如30秒),我想让它重新加载页面,但我对jQuery
很新,不知道从哪里开始。
我可以在代码中看到success
,并且已经找到了大量关于计时的资源,但不确定要测试什么或在哪里测试等。
如果可以,请告知并提前感谢您!
self.submitSearch = function () {
$("#foundMembersTableParent").block({ message: '<img src="/Content/images/spinnerLarge.gif" /> Searching...' });
self.selectedMembers.removeAll();
fnOnSearch();
$.ajax({
type: 'POST',
url: '/Members/MSearch',
contentType: "application/json; charset=utf-8",
data: self.getFormData(),
success: function (data) {
self.members($.map(data.searchResults, function (item) { return new Members(item) }));
$("#foundMembersTableParent").unblock();
},
dataType: "json"
});
}
self.getFormData = function () {
var frmobj = $('#complexSearchForm').serializeObject();
return JSON.stringify(frmobj);
}
答案 0 :(得分:2)
只需在timeout
请求中添加error
和ajax
处理程序:
$.ajax({
type: 'POST',
url: '/Members/MSearch',
contentType: "application/json; charset=utf-8",
data: self.getFormData(),
success: function (data) {
self.members($.map(data.searchResults, function (item) { return new Members(item) }));
$("#foundMembersTableParent").unblock();
},
dataType: "json",
timeout: 30000, // 30 seconds
error: function(qXHR, textStatus, errorThrown) {
if (textStatus === "timeout") {
// request timed out, do whatever you need to do here
}
else {
// some other error occurred
}
}
});
请参阅文档:https://api.jquery.com/jQuery.ajax/
作为一个疯狂的猜测,我认为你可能正在使用这个插件:
http://malsup.com/jquery/block/#element
在这种情况下,在error
处理程序中,您真正需要做的就是:
$("#foundMembersTableParent").unblock();
恢复网格功能。当然,您可能还想在某处调出错误消息,以便用户理解表格没有变化的原因。