2010-05-03 85 views
1

新的json/jQuery非常抱歉,如果這有一個明顯的答案。如何處理在JQuery中返回字符串的JSON請求?

我做jQuery的Ajax請求這是這樣的:

$.ajax({ 
     url: theURL, 
     dataType: 'jsonp', 
     type: 'get', 
     success: function(data) { 
      alert("it's there"); 
     } 
    }); 

的請求一個給定的對象是否是在數據庫中。如果是,則返回格式的東西:

{ 
    "text": "duck", 
    "canonical_name": "duck", 
    "language": { 
     "id": "en" 
    }} 

然而,如果該對象不存在,則返回:

Not Found 

如...從字面上,準確的字符串,而不是在據我所知,任何類型的json格式。有什麼辦法可以讓我的ajax檢測到嗎?現在它似乎沒有承認它在後一種情況下得到了回報。

json代碼不是我寫的。如果這不是正確的格式,它可能是固定的,並且從我的最終工作中完全沒有辦法處理這個問題,但是我真的想盡可能找到某種解決方法。

非常感謝!

+0

如果對象不存在,它會返回字符串'Not Found'還是HTTP狀態404? – 2010-05-03 06:40:01

+0

不,它實際上返回字符串'未找到'...不是狀態404. – knt 2010-05-03 13:31:47

回答

0

您刪除具體的數據類型選項,並在回調:

success: function(data) { 
     alert("it's there"); 
     var myJSON = eval(data); 

    } 

現在你可以將數據作爲一個對象,並使用類似:

myJSON.language.id 
+1

唯一的問題是,這種情況下,這個JSON可能來自不可靠的來源,在這種情況下,你不會想要使用eval (),但第三方json庫安全地解析數據。如果你知道所有的信息來自哪裏,那就沒有問題了! – Lowgain 2010-05-03 07:35:09

0

@Aneesh不知道,你要刪除dataType選項,但你仍然可以解析成功回調中的數據。我會使用JSON.stringify()或更好的:$ .parseJSON(data)來避免@Lowgain指出的eval缺點。你最終會得到:

success: function(data) { 
    var myJSON = $.parseJSON(data); 
}