我需要调用一个动作,它返回一个带有列表和标志的模型,告诉我查询是否已完全加载,如果此标志为false,我必须再次调用该操作并将这些新结果附加到之前,依此类推,直到旗帜为真。我的ajax调用是这样的:
function load() {
$.ajax({
url: "/MyController/Action",
datatype: 'json',
contentType: "application/json",
traditional: true,
data: JSON.stringify({
...params....
}),
type: "POST",
success: function (d) {
$("#mydiv").html(d);
},
complete: function () {
setTimeout(load, 2000);
}
});
}
如何检查此标志(作为动作模型的一部分)????
答案 0 :(得分:1)
如果您使用的是jQuery 1.10+,那么您可以使用jqXHR对象的resposeJSON属性,如
function load() {
$.ajax({
url: "/MyController/Action",
datatype: 'json',
contentType: "application/json",
traditional: true,
data: JSON.stringify({...params....
}),
type: "POST",
success: function (d) {
$("#mydiv").html(d);
},
complete: function (jqXHR) {
if (!jqXHR.responseJSON || !jqXHR.responseJSON.flag) {
setTimeout(load, 2000);
}
}
});
}
如果不是,则需要处理成功和失败处理程序
function load() {
$.ajax({
url: "/MyController/Action",
datatype: 'json',
contentType: "application/json",
traditional: true,
data: JSON.stringify({...params....
}),
type: "POST",
success: function (d) {
$("#mydiv").html(d);
if (!d.flag) {
setTimeout(load, 2000);
}
},
error: function (jqXHR) {
setTimeout(load, 2000);
}
});
}