【问题标题】:JSON and unexpected character [duplicate]JSON和意外字符[重复]
【发布时间】:2013-11-26 13:22:06
【问题描述】:

考虑到我从 ajax 调用中得到的这个结果:

 [
    {
        "field1": "2381",
        "field2": "1233",
        "field3": "43.79489333333333",
        "field4": "11.22697833333333"
    },
    {
        "field1": "2381",
        "field2": "1774",
        "field3": "45.70752833333334",
        "field4": "9.489278333333333"
    }
]

并且有一个 ajax 调用它不断返回“意外字符”错误,我使用这种调用:

jQuery.ajax({ 
    type: "GET",
    dataType: "json",
    url: "/myUrl.php",
    success: function(data) {
        console.log(data);
        var arrayObjects = JSON.parse(data);
    }
}); 

所以自从我在网上看到这种 ajax 调用,它说:

[{"value": "test"}] is valid 

所以我想知道为什么我的对象总是返回“意外字符”。

【问题讨论】:

  • 在哪里您的代码返回“意外字符”? console.log(data) 的输出是什么?
  • 这是 console.log(data) 的输出:[Object { field1="2381", field2="1233", field3="43.79489333333333", more...}, Object { field1 ="2381", field2="1774", field3="45.70752833333334", 更多...}]
  • 已经是JSON格式了,不是字符串
  • @Moho,“它已经是 JSON 格式,不是字符串” 也许您的意思是“它已经是一个对象,而不是 JSON 字符串”? JSON 始终是一个字符串,当您在代码中使用 JSON 语法创建本机对象时,它只是一个对象文字,而不是 JSON。

标签: javascript jquery json


【解决方案1】:

在使用jQuery.ajax时,如果你指定dataFormat,它会在将数据传递给回调函数之前尝试自动按照指定的格式解析响应。

因此,您在回调中收到的不是 JSON 字符串,它已经是一个 JavaScript 对象,不需要任何解析。

jQuery.ajax({ 
    type: "GET",
    dataType: "json", // <-- this specifies the data format already
    url: "/myUrl.php",
    success: function(data) {
        console.log(data[0]); //logging first record
        //var arrayObjects = JSON.parse(data); //not needed

    }
}); 

【讨论】:

    【解决方案2】:

    通过设置dataType: "json",您告诉jQuery 将接收到的数据解析为JSON,因此数据作为Javascript 数组传递给success() 函数。

    见:http://api.jquery.com/jQuery.ajax/

    【讨论】:

      【解决方案3】:

      从 API 返回的 data 似乎已经是 array

      你正在尝试解析一个数组,所以出错了。

      所以改变

      var arrayObjects = data;
      

      【讨论】:

      • 但在 PHP 中我使用这行代码:echo json_encode($results);
      猜你喜欢
      • 2013-05-31
      • 1970-01-01
      • 2020-11-02
      • 2013-09-14
      • 2014-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多