繁体   English   中英

IE8 Ajax提交总是抛出错误功能

[英]IE8 Ajax submission always throws error function

该代码可在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>

希望有人可以解决。

检查您是否已在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,您需要使用一个插件来通过XDomainRequest启用CORS,因为它不支持XMLHTTPRequest。 jQuery团队不打算在jQuery核心中添加对此的支持,因为IE8是一种快速老化的浏览器。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM