2011-07-29 53 views
0

我試圖追查一個JavaScript異常,我得到時解析一些JSON已由AJAX請求返回的IE。通常我會假設我的代碼中存在JSON格式錯誤,但在這種情況下,JSON在Chrome,FireFox & IE中解析得很好,但是在IE的情況下,只有URL是localhost。如果我將網址更改爲我的筆記本電腦,而其指向的是完全相同的位置,則JSON無法在IE中解析,但在Chrome和FireFox中仍然可以。IE JSON解析工作,如果從本地主機失敗,否則

JSON非常簡單。下面的線是從VS.Net的調試器等兩端的雙引號化妝品:

data = "{ "ID" : 15, "Name" : "Hobart" } " 

的JSON被解析有:

data = JSON.parse(data); 

我檢查了所有我能想到的看看來自本地主機和我的筆記本電腦的響應是否不同,但無法找到任何東西。爲什麼IE會在服務器主機名更改時決定不解析JSON?

更新:如果我打開本地主機版本與IE的兼容模式打開然後JSON配對alsi失敗。關閉兼容模式,它工作。

+0

什麼版本的IE? [SSCCE](http://sscce.org)? –

+0

8 .............. – sipwiz

回答

0

問題的原因是IE的兼容模式。這個question中的註釋讓我打開了IE Developer Tools窗口,並且該Web應用程序在IE7兼容模式下運行。我不知道它爲什麼這樣做,並且兼容模式按鈕沒有顯示在IE地址欄中。至少我仍然知道現在的問題是什麼,並且這比解決javascript的大量問題更容易解決。

0

您提供的JSON不是有效的JSON結構。每個元素都需要用封閉的" "包裝。

data = "{ "ID" : "15", "Name" : "Hobart" }" 

注意15現在是「15」。

一些較弱的解析器和/或瀏覽器組合可能對規範的輕微偏差具有更好的容忍度。

+0

我修正了JSON格式,但沒有解決錯誤。而奇怪的是,它是解析瀏覽器的相同瀏覽器和代碼,只是取決於服務器主機名稱而失敗。 – sipwiz