我正在從IE8升級到IE11。我的工作主要是解決CSS錯誤,但我也遇到了JavaScript的一些問題。從IE8升級到IE11時出錯
在我master.jsp
頁,我有這個JavaScript:
<script type="text/javascript">
$(function() {
$.ajax({
url: toFullPath('/getID.do')
,type: "POST"
,cache: false
,dataType: "text"
,success: function(data) {
var jsonData = null;
try {
jsonData = jQuery.secureEvalJSON(data);
} catch(e) {
setTimeout(function() {
alert('Failed to start.');
}, 10);
return;
}
$.appconf.systemId = jsonData.systemId;
setTimeout(function() {
startSystem(document.forms['startForm'], toFullPath('/showLoginPageAction.do'));
}, 10);
}
});
});
</script>
這個腳本在IE8,IE9,IE10
當這個腳本在運行IE11運行正常,它不斷失敗。經過調試,我發現在兩個版本的IE中,data
變量的值不同。
在IE8它是一個有效的JSON:
"
{"ID":"001","system_changes":{}}
"
但IE11,這似乎是母版頁的內容:
"\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n<!DOCTYPE html>\r\n<html>\r\n<head>\r\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\" />\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=shift_jis\">\r\n<meta http-equiv=\"Content-Style-Type\" content=\"text/css\">\r\n<meta http-equiv=\"Content-Script-Type\" content=\"text/javascript\">\
(對不起,我不能照搬全的內容,因爲這將是太長了。)
據我瞭解,在data
將getID.do
產生,但是當我使用調試模式,似乎這個網頁是永遠ACCE ssed。
data
這是什麼形式?爲什麼兩個瀏覽器版本有差異?
UPDATE:
使用招,我發現兩個IE版本發送相同的請求的動作:
POST /src/getID.do HTTP/1.1
在IE8,與一個JSON內容和HTTP代碼的服務器響應as 200
但是在IE11中,響應的http代碼是302,這是什麼意思?
'toFullPath()'函數返回什麼? (IE11中的部分行爲不同,導致它向錯誤的URL發出請求?) – nnnnnn
@nnnnnn它將返回域,例如:當前子域爲'src','toFullPath('/ getID .do')'會返回'src/getID.do',我檢查了粗體IE版本,它們返回的是相同的url – NeedAnswers
對不起,它會返回'/ src/getID.do' – NeedAnswers