使用调试模式时,JSON只能正确地进行字符串化

时间:2017-12-11 02:05:19

标签: javascript php json ajax local-storage

好吧基本上我正在尝试从本地获取一些数据到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中获得任何值。有人可以帮忙吗?我怀疑它是本地存储部分,但我不确定是什么。

0 个答案:

没有答案