我有以下代码适用于除IE之外的所有浏览器:我得到拒绝访问。请帮忙!!!我看过很多例子但仍然无法解决这个问题。我想保持简单,因为我正在做的是从URL返回一些文本。
<script type="text/javascript">
// Insure the document is loaded...
$(document).ready(function() {
// Set the URL for the POS API...
var PosApiUrl = 'https://test.safety.com/posapi/getposmessage?app=RMIS';
// Load the POS API Message...
function loadPOSMessage(edurl) {
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
} else if (window.XDomainRequest) {
xmlhttp = new XDomainRequest();
} else {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
var jsonEdition = xmlhttp.responseText;
var objEdition = JSON.parse(jsonEdition);
$.each(objEdition, function(key, val) {
if (val.length === 0) {
$('.posMsgContainer').hide();
} else {
$('.posMsgContainer').html(val);
}
});
}
};
xmlhttp.open("GET", edurl, true);
xmlhttp.send();
}
// Make the call to load the POS message...
loadPOSMessage(PosApiUrl);
});
</script>
答案 0 :(得分:0)
上面的代码不起作用,因为IE的XDomainRequest的API与XMLHttpRequest的API略有不同。例如,代替onreadystatechange(),它使用onload()。
我发现在IE 8/9上支持CORS的最简单方法是从这里包含xhr-xdr-adapter.js文件: https://github.com/intuit/xhr-xdr-adapter/blob/master/src/xhr-xdr-adapter.js
您可以在需要的地方加入,如下所示:
<!--[if lt IE 10]>
<script src="xhr-xdr-adapter.js" type="text/javascript"></script>
<![endif]-->
一旦你包含xhr-xdr-adapter,你就可以使用标准的XMLHttpRequest API,而不用担心你是否在IE 8/9上运行(只要你不需要)做一些喜欢发送自定义标题的东西,或使用GET或POST以外的方法。)