我正在从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