此代码适用于XP机器上除IE8之外的所有其他浏览器。不能为我的生活搞清楚。在IE8中,它将始终显示错误功能。我已经尝试将dataType更改为jsonp,text,html,无论它总是弹出错误函数。就像我说的那样,Chrome,Safari,Firefox以及所有其他IE的工作,只不是IE8。
<script type="text/javascript">
$("#zip").submit(function (e) {
e.preventDefault();
if ($(this).parsley('isValid') === true) {
var el = $("#zipcode");
if ((el.val().length == 5) && (is_int(el.val()))) {
$.ajax({
url: "http://zip.elevenbasetwo.com/v2/US/" + el.val(),
cache: false,
dataType: "json",
type: "GET",
success: function (result, success) {
console.log(result.state);
$('.rates-zip').fadeOut(function () {
switch (result.state) {
case "California":
$('#western').fadeIn();
break;
case "Illinois":
case "Virginia":
$('#midwest').fadeIn();
break;
case "New York":
case "New Jersey":
$('#eastern').fadeIn();
break;
case "Washington":
$('#northwest').fadeIn();
break;
default:
$('#default').fadeIn();
}
})
},
error: function (result, success) {
alert("Error IE8");
}
});
}
};
});
function is_int(value) {
if ((parseFloat(value) == parseInt(value)) && !isNaN(value)) {
return true;
} else {
return false;
}
}
</script>
希望有人可能有解决方案。
答案 0 :(得分:0)
检查您是否在jQuery中启用了CORS:
$.support.cors = true;
另外,请确保您在IE8中不迟于jQuery 1.9.1运行。在jQuery 2.x中删除了对IE8的支持。
您可能需要根据IE版本动态地将正确版本的jQuery插入到DOM中。
这样的事情可行:
var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
var ie = re.exec(navigator.userAgent)?parseFloat(RegExp.$1):10;
if(ie >= 10)
document.write("<script src='/js/jquery2.1.0.js'><\/script>");
else
document.write("<script src='/js/jquery1.9.1.js'><\/script>");
此外,使用IE8,您需要使用plugin来启用带有XDomainRequest的CORS,因为它不支持XMLHTTPRequest。由于IE8是一个快速老化的浏览器,jQuery团队并不打算将此支持添加到jQuery核心。
除此之外,您的远程服务器也需要支持CORS。它需要通过Access-Control-Allow-Origin
响应标头允许所有来源。如果响应中不存在此标头,则不会返回200 OK
响应。