2013-04-12 64 views
5

由於Ajax調用如:jquery 1.9 .ajax()數據類型默認已更改?

$.ajax(
{ 
    url:"MyWebService.blah", 
    data: {"data":"awesome"}, 
    success : function(responseText) 
    { 
     var myJsonObj = $.parseJSON(responseText); 
     //do stuff with myJsonObj 
    } 
}); 

這是工作的罰款。我今天將jQuery更新到了1.9(我在1.6版本中),作爲Safari的一個可能的修復,突然不支持各種切換功能(不再支持eventLayer.X),現在我所有的ajax調用都拋出下面的JavaScript錯誤:

Uncaught Syntax Error: Unexpected token o 

一個小小的研究,經過一番測試,我發現上面的「responseText的」在我的代碼現在是一個JSON對象,而不是一個字符串。所以這個錯誤是有道理的,但我試圖圍繞這個來解決我的問題。 jQuery真的改變了默認的返回類型嗎?我查看了文檔:

http://api.jquery.com/jQuery.ajax/ 

和dataType默認爲「智能猜測」。我可以看到這可能是方便的,但我也不喜歡它。

因此,這裏是我的問題:

  1. 這是jQuery中的一個新的(ISH)的變化?
  2. 它是1.9版本嗎?或者以前是這樣的,我是使用1.6的化石?
  3. 有什麼建議來處理這種和我的代碼「面向未來」的某種?

這是一個非常重要的變化,會影響很多代碼。我會通過我的代碼並刪除任何解析我返回的數據到JSON的實例,但是這整個事情有點令人不安。我誤認爲沒有指定數據類型?我想這是一個很好的做法,強制執行一個數據類型,而不是依靠默認值,但...哇。我獨自一人,還是在jQuery方面有點冒失鬼?

+0

http://jsfiddle.net/5e9KC/在這裏可以正常工作...嗯這是什麼'o'?必須有別的東西在這裏改變 –

+0

看到curCSS被棄用 –

+0

@mcpDESIGNS你的小提琴不「工作」,因爲它什麼都不做。顯然JavaScript需要實際執行才能拋出錯誤。 烘烤,「curCSS?」我沒有在我的代碼中使用它,爲什麼會這樣呢? – AceCorban

回答

6

如果沒有設置dataType,jQuery會自動檢測dataType是基於返回的內容。最有可能的1.9只是改進了檢測,以正確地檢測您作爲json返回的內容。最好總是給出一個數據類型,以確保你總能得到一致的結果。

+0

所以你說「智能猜測」是ajax返回類型的意圖一段時間(甚至可能在1.6),但它現在只是在做更好的工作? – AceCorban

+0

是的。它只是在猜測數據是什麼時做得更好。 –

+0

夠公平的。謝謝。 – AceCorban