我尝试从服务器获取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格式?
STACK TRACE RESULT
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 DATA
[{ "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..." }
答案 0 :(得分:2)
如果您已经定义了dataType: "json"
参数并且还使用了AJAX的error
回调方法,那么AJAX将检查响应头Content-type
您应该在服务器响应中设置text/json
标头..
PS:第二个JSON看起来是正确的,但有时space
或enter ♪
可能会有响应,这些字符在响应中不可见,但这些可能会产生回调函数问题。