У меня есть функция в файле .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 ()?