Javascript IE8Ajax提交总是抛出错误函数

Javascript IE8Ajax提交总是抛出错误函数,javascript,jquery,ajax,internet-explorer-8,Javascript,Jquery,Ajax,Internet Explorer 8,除了XP机器上的IE8之外,此代码在其他浏览器中都可以使用。我一辈子都想不出来。在IE8中,它将始终显示错误功能。我已经尝试过将数据类型更改为jsonp、文本、html,无论发生什么,都会弹出错误函数。就像我说的,Chrome、Safari、Firefox和所有其他IE的工作,只是不是IE8 <script type="text/javascript"> $("#zip").submit(function (e) { e.preventDefault();

除了XP机器上的IE8之外,此代码在其他浏览器中都可以使用。我一辈子都想不出来。在IE8中,它将始终显示错误功能。我已经尝试过将数据类型更改为jsonp、文本、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>

$(“#zip”).submit(函数(e){
e、 预防默认值();
if($(this).parsley('isValid')==true){
var el=$(“#zipcode”);
如果((el.val().length==5)和(&(is_int(el.val())){
$.ajax({
url:“http://zip.elevenbasetwo.com/v2/US/“+el.val(),
cache:false,
数据类型:“json”,
键入:“获取”,
成功:功能(结果,成功){
console.log(result.state);
$('.rates zip').fadeOut(函数(){
开关(结果状态){
“加利福尼亚”案:
$('西部').fadeIn();
打破
“伊利诺伊州”案:
“弗吉尼亚”案:
$('midwest').fadeIn();
打破
案例“纽约”:
“新泽西”案:
$(“#东部”).fadeIn();
打破
“华盛顿”案:
$(“#西北”).fadeIn();
打破
违约:
$(“#默认值”).fadeIn();
}
})
},
错误:函数(结果,成功){
警报(“错误IE8”);
}
});
}
};
});
函数为整(值){
if((parseFloat(value)==parseInt(value))&&&!isNaN(value)){
返回true;
}否则{
返回false;
}
}

希望有人能找到解决方案。

检查您是否在jQuery中启用了CORS:

$.support.cors = true;
另外,请确保运行的版本不晚于IE8中的jQuery 1.9.1。在jQuery2.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>");
var re=newregexp(“MSIE([0-9]{1,}[\.0-9]{0,})”;
var ie=re.exec(navigator.userAgent)?parseFloat(RegExp.$1):10;
如果(即>=10)
文件。填写(“”);
其他的
文件。填写(“”);
另外,在IE8中,您需要使用来启用带有XDomainRequest的CORS,因为它不支持XMLHTTPRequest。jQuery团队不打算在jQueryCore中添加对此的支持,因为IE8是一款快速老化的浏览器


除此之外,您的远程服务器还需要支持CORS。它需要通过
Access Control allow Origin
response头允许所有来源。如果响应中不存在此标题,它将不会返回
200 OK
响应。

检查操作错误。上面写的是什么?zip.elevenbasetwo.com是您的域吗?您使用的是什么版本的jQuery?我不认为IE8与其他更现代的浏览器一样支持CORS。您可能会遇到IE8与e.preventDefault()不兼容的情况,请参阅:@CameronTinker您可能是对的。本文似乎更深入地探讨了这一点,并提供了一些解决方法:您需要一个jQuery插件来将CORS添加到IE8中。