我遇到了一個單獨工作的頁面有問題,但是當它嵌入到公司網頁(我不控制)的iFrame中時,它在IE9(但不是IE8)中扼流圈。調試IFrame內容
該頁面使用jQuery創建AJAX調用,並使用KnockoutJS綁定顯示的內容。該頁面將GET請求中的參數傳遞給我的服務器,並用AJAX做出響應,並且在從服務器獲取數據時它似乎窒息。該數據是正確的,正確的格式,但是,當這個代碼執行:
$.ajax({
url: this.serviceURL + parameters,
dataType: 'json',
success: callback,
timeout: 3000,
error: function (jqXHR, status, errorThrown) {
if (status == "timeout") {
error("The connection to the server timed out.\nEither the server is down or the network is slow.\nPlease try again later.");
}
else {
error("An error occurred while trying to communicate with the server.\n " + errorThrown);
}
}
});
在IE9中,我總是打「發生錯誤...」分支的「語法錯誤:無效字符」的errorThrown,這什麼都沒告訴我。
有人對如何去解決這個問題有什麼建議嗎?我使用Fiddler來查看服務器發送和返回的內容,並且一切看起來都很好。
更新:睡了一會兒後,我今天開始新鮮。我已經確定的是,由於某種原因,當我的頁面的iframe,而不是讓JSON響應:
"{"Foo":true,"Bar":true}"
我真的開始(從錯誤處理程序迫使一個錯誤,所以我可以檢查在jqXHR.responseText的狀態):
" {"Foo":true,"Bar":true}"
其中如果使用控制檯,我嘗試喂到JSON.parse,給我一個錯誤。所以問題是,領先的空間來自何處?如果我在Firefox中運行它,我會看到來自服務器的正確響應(沒有空間),如果我在iFrame之外運行,我看不到任何前導空間。所以我不想認爲它是即將到來的服務器端。在母版頁和我的頁面上運行的JS混亂中,它插入了一個前導空間。
更新2:仔細觀察發現,jqXHR.responseText.charCodeAt(0)是65279,因此它並不是一個真正的空間(雖然它顯示爲一個),它是字節順序標記。但爲什麼現在(而不是之前)以及它爲什麼會導致問題呢?
需要更多信息,而不是「有問題」。發佈有關您的網址的更多詳細信息,顯示完整的錯誤消息errorThrown等。 – 2012-08-06 18:31:05
我無法提供該URL,它位於我們的內部Intranet上。錯誤消息是「SyntaxError:Invalid character」,正如我在文章中所說的。如果您對如何提取更多信息有任何建議,我想聽聽。這實際上是問題的一半。 – 2012-08-06 18:45:34
「而且一切看起來都很好」 - 顯然不是某處 - 或者服務器端出現錯誤。 'alert(errorThrown);'''alert(parameters);''alert(this.serviceURL);'看看你在哪裏。 – 2012-08-06 19:02:09