1
我試圖使用indexedDB來存儲離線數據,然後在連接時上傳數據。在下面的代碼中,循環用於從indexedDB讀取數據,併爲表(store)中的每個記錄(對象)創建一個JSON對象並將其發佈到PHP文件中。但是,這個indexedDB循環只執行一次。這是因爲JSON對象是異步發送給服務器的嗎?將循環中的indexedDB數據上傳到PHP
var trans = LocalDB.indexedDB.db.transaction(storename,
IDBTransaction.READ_WRITE);
var store = trans.objectStore(storename);
var keyRange = IDBKeyRange.lowerBound(0);
var cursorRequest = store.openCursor(keyRange);
cursorRequest.onsuccess = function (e) {
var result = e.target.result;
var obj = new Object;
obj.name = result.value.Name;
obj.Date = result.value.Date;
if (window.XMLHttpRequest)
xmlhttp = new XMLHttpRequest();
else
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
alert(xmlhttp.responseText);//problem: only shown once
result.continue();
}
};
xmlhttp.open("POST", "upload.php");
xmlhttp.setRequestHeader("Content-type", "application/json", true);
xmlhttp.send(JSON.stringify(obj));
};
cursorRequest.onerror = function (e) { alert("Error uploading"); };
謝謝。同意你,我想如果問題不能輕易修復,那麼我應該發佈一個對象數組到PHP。 – HQXU85