JSON.parse()不工作,即使JSON字符串是有效的

JSON.parse() not working even though JSON string is valid

本文关键字:JSON 字符串 有效 即使 工作 parse      更新时间:2023-09-26

我试图通过AJAX jQuery发布表单。它所指向的PHP脚本返回一个JSON编码的数组。但是,在主界面接收端,JSON.parse()不工作。

请建议如果我错过了一些文件类型,需要包括

这是我的代码。

< script type = "text/javascript" >
  $(document).ready(function() {
    $("#send").submit(function() {
      //$("#submit_form").html('');
      $("#modal-text2").html("<img src=" + "img/loader1.gif " 
              + "/></br</br><h4>DATA VALIDATION IN PROCESS !!! PLEASE WAIT</h4>");
      $("#myModal2").modal('show');
      $.post($("#send").attr("action"), $("#send").serialize(), function(data) {
        var decode = JSON.parse(data);
        if (decode.err > 0) {
          alert("Hi");
        }
      });
      //Important. Stop the normal POST
      return false;
    });
  }); 
< /script>

PHP脚本返回的JSON编码数组是:

{"err":8,"er1":1,"er3":1,"er4":1,"er5":1,"er6":1,"er7":1,"er8":1,"er9":1,"error1":"First Name is Required","error3":"Last Name is Required","error4":"Email is Required","error5":"Please Select a Gender","error6":"Date of Birth is Required","error7":"Mobile No is Required","error8":"Password is Required","error9":"Please Fill The Captcha"}

我不知道这是问题的原因,还是只是这里的一个错别字,但你在下一行有一个错别字:

<img src="+"img/loader1.gif "+"/></br</br>

你没有关闭第一个换行符,斜杠应该在br之后-也不确定为什么你在HTML块中有这么多引号-它应该是:

$("#modal-text2").html("<img src='img/loader1.gif'/><br/><br/><h4>DATA VALIDATION IN PROCESS !!! PLEASE WAIT</h4>")
  • 您应该console.log(data)检查data值是否有问题
  • 如果JSON.parse中发生错误,使用try/catch捕获消息。

    try {
      var decode = JSON.parse(data);
    }catch(e){
      console.log(e) ; 
    }
    
  • 确保php以正确的方式响应json。或者可能有一些看不见的性格而制造问题。

    <?php 
      $data = ... ;
      header('Content-type:application/json;charset=utf-8');
      echo json_encode($data) ;
    ?>
    

我认为在你的脚本中有一个语法错误,只是在脚本的最后一行检查出来有空间,删除它并尝试-

</script>

我执行你的代码的解析片段,它工作正常。

var data = '{"err":8,"er1":1,"er3":1,"er4":1,"er5":1,"er6":1,"er7":1,"er8":1,"er9":1,"error1":"First Name is Required","error3":"Last Name is Required","error4":"Email is Required","error5":"Please Select a Gender","error6":"Date of Birth is Required","error7":"Mobile No is Required","error8":"Password is Required","error9":"Please Fill The Captcha"}';
    var decode = JSON.parse(data);

     if (decode.err > 0) {
        alert("Hi");
      }