我在.js文件中有一个函数,它接收存储在localStorage中的信息,并使用同步ajax调用将它们同步回服务器。 (整合顺序至关重要,因此需要同步)
function syncUp() {
var xml = new XMLHttpRequest();
xml.open("GET", "Default.aspx", true); Also tried setting this to false
xml.onreadystatechange = function() {
if (xml.readyState == 4) {
if (xml.status == 200) {
var items = localStorage.getItem("SyncOrder");
var sync = items.split(",");
for (var i = 0; i < sync.length -1; i++) {
Perform repeated synchronous calls to webservice via AJAX to integrate each item to the server
}
}
}
}
xml.send(null);
}
从多个地方调用syncUp()。当直接从按钮的onclick事件调用时,syncUp()是唯一被调用的函数并且唯一的代码正在运行,它可以很好地工作。但是,如果从我首先将项添加到localStorage对象然后调用syncUp()的页面,如下所示
function saveEdit(item) {
var currData = localStorage.getItem("SyncOrder");
localStorage["SyncOrder"] = currData + "," + item;
syncUp();
}
,xmlHTTPRequest状态返回0并且同步不执行。什么可能阻止xmlHTTPRequest获得200的响应,因为在syncUp()之前运行的唯一代码是几行javascript,应该在站点进入syncUp()之前执行?
答案 0 :(得分:1)
状态代码为零的原因有两个。
在你的情况下,我认为它是#2。如果您使用按钮或链接进行Ajax调用,请务必使用preventDefault
或return false
取消点击操作。