我有以下可以工作并返回数据的内容:
function ScrollToBottom() {
$.ajax({
async: false,
type: "POST",
url: "index.aspx/function",
data: 'val,val2,val3',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: OnSuccess,
failure: function (response) {
alert('An error has occured, please refresh the page.');
},
error: function (response) {
alert('An error has occured, please refresh the page.');
}
});
}
function OnSuccess(response) {
var xmlDoc = $.parseXML(response.d);
var xml = $(xmlDoc);
}
当前问题出现在 Firefox 中,因为 async: false
无法正常执行。如果用户一直滚动到页面底部,则会调用上述函数。
Firefox 中发生的情况是用户滚动,该函数被调用多次,而不是说 5 组不同的数据,用户会看到同一组数据 5 次。
我对上述调用的替代方案是什么,这样它就不会是异步和普通的旧同步“等到前一位完成”代码?
最佳答案
如果正在加载,请尝试设置一个标志:
var loading = false;
function ScrollToBottom() {
if(loading) return;
loading = true;
$.ajax({
async: false,
type: "POST",
url: "index.aspx/function",
data: 'val,val2,val3',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: OnSuccess,
failure: function (response) {
alert('An error has occured, please refresh the page.');
},
error: function (response) {
alert('An error has occured, please refresh the page.');
},
always: function(response){
loading = false;
}
});
}
function OnSuccess(response) {
var xmlDoc = $.parseXML(response.d);
var xml = $(xmlDoc);
}
关于javascript - 非异步 POST 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42063901/