好吧基本上我正在尝试从本地获取一些数据到php mysql。使用LocalStorage和JavasScript。我使用javascript填充值数组,使用JSON.Stringify对其进行字符串化,然后将结果用作对PHP脚本的POST请求的参数。我使用Chrome来预览我的作品。我的代码如下所示:
function jsontest(){
//debugger;
var jsonData = [];
//jsonData.push({"recordkey" : "syaf"})
var objectStore = db.transaction("customers").objectStore("customers");
objectStore.openCursor().onsuccess = function(event) {
var cursor = event.target.result;
if (cursor) {
var v_key = cursor.key;
var v_unit = cursor.value.unitno;
var v_location = cursor.value.location;
var v_item = cursor.value.item;
var v_defect = cursor.value.defect;
jsonData.push({"recordkey" : v_key})
cursor.continue();
}
else {
//alert("No more entries!");
}
};
uploadJson(jsonData);
}
function uploadJson(jsonData){
alert (jsonData);
var jsonString = JSON.stringify(jsonData);
alert (jsonString);
var xmlHttp = new XMLHttpRequest();
xmlHttp.open("POST", "upload_process.php", true);
xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlHttp.send("x=" + jsonString);
xmlHttp.onreadystatechange = function(){
if(xmlHttp.readyState == 4 && this.status == 200){
var ajaxDisplay = document.getElementById('ajaxDiv');
alert(xmlHttp.responseText);
ajaxDisplay.innerHTML = xmlHttp.responseText;
}
}
}
因此,jsontest()组成JSON字符串并将结果传递给uploadJson,后者将对JSON数据进行字符串化并将其作为AJAX请求发送并显示在网页中。
这是一个奇怪的部分:它只有在我通过Chrome的开发人员工具调试器运行时才有效。如同,警报(在uploadJson中)显示来自本地存储和stringify的正确值。但是,如果我不使用调试器,不知何故我没有在jsonData中获得任何值。有人可以帮忙吗?我怀疑它是本地存储部分,但我不确定是什么。