【问题标题】:Weird "Parsing JSON Request Failed" - jQuery奇怪的“解析 JSON 请求失败” - jQuery
【发布时间】:2015-06-26 00:45:30
【问题描述】:

我尝试从我的服务器获取 JSON 数据。但它适用于某些数据,不适用于其他数据。

我试图捕捉错误,它说解析 JSON 请求失败。

这是代码

var url1 = 'http://example.com/example/bookdetail.php?id='+e;
$.ajax({
    type: "GET",
    url: url1,
    dataType: "json",
    success: function(data){
        //do my stuff with the JSON data


    },error:function(x, e){
                  if (x.status === 0) {
                     alert('You are offline!!\n Please Check Your Network. ' + x.reponseText);
                  }
                  else if (x.status == 404) {
                     alert('Requested URL not found.');
                  } else if (x.status == 500) {
                     alert('Internel Server Error.');
                  } else if (e == 'parsererror') {
                     alert('Error.\nParsing JSON Request failed.');
                  } else if (e == 'timeout') {
                     alert('Request Time out.');
                  } else {
                     alert('Unknow Error.\n' + x.responseText);
                  }
          }

});

这是JSON格式的数据

解析失败的数据

[{
    "id": "480",
    "title": "Cocokologi dalam Dunia Agama",
    "photo": "1374573181_cover.jpg",       
    "pdf": "http://example.com/example/1374573181.pdf",
    "desc": "Apakah teks-teks kitab suci sejalan atau cocok dengan pandangan-pandangan saintifik modern, seperti diklaim oleh banyak kaum agamawan pada masa kini? ..."
 }]

工作 JSON 格式

[{
  "id": "330",
  "title": "Demokrasi dan Kekecewaaan",
  "photo": "1374497593_cover.jpg",
  "pdf": "http://example.com/example/1374497593.pdf",
  "desc": "Buku ini bermula dari orasi ilmiah yang disampaikan Goenawan Mohamad (GM) dalam acara Nurcholish Madjid Memorial Lecture (NMML), yang berlang- sung di Aula Nurcholish Madjid, Universitas Paramadina, Jakarta, pada 23 Oktober 2008 lalu. Acara ini adalah acara tahunan Yayasan Wakaf Paramadina (YWP)—kali ini untuk kedua kali, setelah di tahun sebelumnya Dr. Komaruddin Hidayat menyampaikan orasi sejenis untuk pertama kali. Selain untuk mengenang sosok dan pemikiran Cak Nur, be- gitu biasa..."
  }]

这两种类型的 JSON 来自相同的来源,但结果不同。第一个 JSON 数据中是否存在错误的 JSON 格式?

堆栈跟踪结果

This is from stack trace
x.extend.parseJSON (jquery-1.10.2.min.js:4)
On (jquery-1.10.2.min.js:6)
k (jquery-1.10.2.min.js:6)
x.ajaxTransport.send.r (jquery-1.10.2.min.js:6)
Paused on exception. "SystaxError"

JSON 数据

[{ "id" : "330", 
"title" : "Demokrasi dan Kekecewaaan", 
"photo" : "1374497593_cover.jpg", 
"pdf" : "http://example.com/books/1374497593.pdf", 
"desc" : "Buku ini bermula dari orasi ilmiah yang disampaikan Goenawan Mohamad (GM) dalam acara Nurcholish Madjid Memorial Lecture (NMML), yang berlang- sung di Aula Nurcholish Madjid, Universitas Paramadina, Jakarta, pada 23 Oktober 2008 lalu. Acara ini adalah acara tahunan Yayasan Wakaf Paramadina (YWP)—kali ini untuk kedua kali, setelah di tahun sebelumnya Dr. Komaruddin Hidayat menyampaikan orasi sejenis untuk pertama kali. Selain untuk mengenang sosok dan pemikiran Cak Nur, be- gitu biasa..." }

【问题讨论】:

  • JSON 是正确的。其他地方有问题。不是 JSON 格式。
  • 其他错误的可能性是什么?
  • 你能告诉我们堆栈跟踪中错误的确切位置吗?
  • 你在加载跨域吗?如果是,服务器是否以有效的 JSONP 外观响应进行响应?
  • 是的,我使用跨域。它适用于其他数据,如示例中所示,适用于 id = 330,但不适用于 id = 480

标签: jquery json


【解决方案1】:

如果您已经定义了dataType: "json" 参数并且还使用带有AJAX 的error 回调方法,那么AJAX 将检查响应头Content-type

您应该在服务器响应中设置text/json 标头..

PS:第二个 JSON 看起来是正确的,但有时 space 或 enter ♪ 可能会附带响应,这些字符在响应中将不可见,但这些可能会导致回调函数出现问题。

【讨论】:

  • 太好了,你是对的。我尝试使用功能来删除输入并且它的工作。谢谢老兄。
猜你喜欢
  • 1970-01-01
  • 2012-03-09
  • 1970-01-01
  • 2021-11-09
  • 1970-01-01
  • 2021-03-20
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多