奇怪的“解析JSON请求失败” – jQuery

我尝试从我的服务器获取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..." } 

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

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

PS:第二个JSON看起来是正确的,但有时spaceenter ♪可能会带来响应这些字符在响应中不可见但这些可能会产生回调函数的问题。