2014-05-20 55 views
0

我嘗試從我的服務器獲取JSON數據。但它適用於某些數據,而不適用於其他人。奇怪的「解析JSON請求失敗」 - jQuery

我試圖捕捉錯誤,它說解析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..." 
    }] 

這2種類型的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..." } 
+0

JSON是正確的。其他地方有問題。不是JSON格式。 –

+0

另一種錯誤的可能性是什麼? – ariezona

+0

你能告訴我確切的錯誤來自stacktrace嗎? –

回答

1

如果您已經定義dataType: "json"參數以及使用error回調方法與AJAX,那麼AJAX會檢查響應頭Content-type

您應該在服務器響應中設置text/json標頭..

PS:第二個JSON看起來是正確的,但有時spaceenter ♪可能帶有響應,這些字符在響應中不可見,但這些可能是回調函數產生的問題。

+0

太好了,你是對的。我嘗試使用函數來刪除輸入和它的工作。謝謝老兄。 – ariezona