2011-01-28 56 views
1

我對歌劇/火狐/ WebKit瀏覽器做AJAX查詢異步JavaScript的JSON查詢失敗與IE Unicode字符只有

$.ajax({ 
    url: (some url), 
    dataType: "json", 
    error: function(xhr, textStatus, errorThrown) { 
     (error handler)   
    }, 
    data : requestData, 
    success: function(data) { 
     (success handler) 
    } 
}); 

完美的作品。然而,當使用IE和requsestData包含一些非ASCII字符的字符串(例如ł)時,返回錯誤並且xhr狀態爲12031.請注意,即使將url替換爲某個現有文檔也不會給404狀態(但它在Opera等中),所以我認爲查詢不會被執行。

關於提到的重複:不幸的是它沒有幫助我。嘗試encodeURIComponent沒有結果(並不奇怪,導致jquery自動這樣做,當對象傳遞給requestData)。即使硬編碼查詢(作爲字符串傳遞),但它不工作。

更新: 如果在IE中緩存,查詢將使用非ASCII數據。這意味着我可以複製準備好的XHR URL,將其粘貼到另一個IE選項卡中,然後使用ajax刷新原始頁面並且不會收到錯誤。

再次更新: 固定。沒有正確編碼的是ajax查詢中給出的引用URL。它包含與非ascii字符的散列(但是如果緩存,工作正常)。感謝你付出的努力。

+0

可能的重複http://stackoverflow.com/questions/2473316/jquery-ajax-is-not-sending-utf-8-to-my-server-only-in-ie? – 2011-01-28 00:06:04

+0

鏈接的問題有更直接的解決方案,推薦,但不是重複。 – 2012-06-25 08:39:52

回答

1

記住你的Ajax調用必須符合UTF8,因爲你沒有指定字符集,那麼它是默認的。

該字符在UTF8中不可接受,您必須自己對其進行編碼。誠然,有些瀏覽器可能會爲你做,但基本上你需要在IE中自己做。