私はlocalStorageに格納された情報を取得し、同期ajax呼び出しを使用してそれらをサーバーに同期させる.jsファイル内の関数を持っています。Javascript外部JSファイルから同期関数を呼び出す
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()が呼び出されています(統合の順序が重要です。同期が必要です)。 syncUp()が呼び出された唯一の関数で、実行中のコードが1つだけであるボタンのonclickイベントから直接呼び出されたとき、それはうまく動作します。しかし、
function saveEdit(item) {
var currData = localStorage.getItem("SyncOrder");
localStorage["SyncOrder"] = currData + "," + item;
syncUp();
}
を次のように私が最初)のlocalStorageオブジェクトに項目を追加し、syncUp(呼び出していますページからの場合は、XMLHttpRequestのステータスは0を返し、同期は実行されません。 xmlHTTPRequestがsyncUp()の前に実行されている唯一のコードとして200の応答を得ることを妨げる可能性があるのは、サイトがsyncUp()に入る前に実行されるべきjavascriptの2行ですか?
saveEditはどのように呼び出されますか? – epascarello
ボタンonclickイベント。特定のページに加えられた編集内容をlocalStorageに保存し、それを同期しようとします。 – jmease