jquery ajax $ .post不工作​​IE10

时间:2012-06-27 22:22:05

标签: jquery ajax internet-explorer post internet-explorer-10

我试过这两种方式。

方式1

function Login() {
    var email = encodeURIComponent($("#loginemail").val());
    var pass = encodeURIComponent($("#password").val());
    $.ajax({
        url:"/user/login",
        type: "POST",
        data: {email:email, password:pass},
        dataType: "json"
    }).done(LoginDone);
    //$.post("/user/login", {email:email, password:pass}, LoginDone);
}

方式2

    function Login() {
        var email = encodeURIComponent($("#loginemail").val());
        var pass = encodeURIComponent($("#password").val());
        $.post("/user/login", {email:email, password:pass}, LoginDone);
    }

这两种方式在Chrome上运行良好,但由于某种原因,IE浏览器不会在{email:email, password:pass}中发送数据POST,或者根本没有。

我在本地服务器和实时网络服务器上都尝试了两种方法,但结果相同。

在这里使用IE10。

6 个答案:

答案 0 :(得分:3)

无法修复@jQuery错误跟踪器:AJAX Post on IE10 / Windows 8

答案 1 :(得分:0)

深度调试后,我找到了IE10 AJAX POST Bug的解决方法:

不要在GET上使用POST。

$.post("Page.aspx?action=edit",a,function(data) {dataRow[0]=data; GoToShowMode(row)});

更改为

a.action=edit;
$.post("Page.aspx",a,function(data) {dataRow[0]=data; GoToShowMode(row)});

答案 2 :(得分:0)

IE-10不起作用数据序列化=> $(this).serialize()

 $('#formLogin').submit(function () {

        $.ajax({
            url: this.action,
            type: this.method,
            data: $(this).serialize(),
            cache: false,
            success: function (data) {

                var val1 = "";
                var val2 = "";

                $.map(data, function (item) {
                    val1 = item.success;
                    val2 = item.URL;
                });

                if (data[0].messageCode == "success") {
                    GoGO(data[0].URL);
                }
                else {
                    alert(data[0].message);
                }
            }
        });
        return false;
    });

为此,您可以在metatag之前在_layOut.chtml上使用此行。因此,IE-10就像IE-9一样工作。

  <meta http-equiv="x-ua-compatible" content="IE=9" >

答案 3 :(得分:0)

试试这个:http://code.gishan.net/code/solution-to-ie10-ajax-problem 适合我。这是IE10的已知问题。

答案 4 :(得分:0)

我在Win7 x64 SP1上遇到了与IE 10(10.0.9200.16521)相同的问题。 我只是通过使用更新版本的jQuery(1.9.1代替1.8.3)来解决问题

答案 5 :(得分:-2)

<击>

<击>
data: {email:email, password:pass}

应该是

data: {"email":email, "password":pass}

您将变量的值作为键传递,因此如果您的服务器端资源期望email,它实际上会看到该变量的值encodeURIComponent($("#loginemail").val())

这可能不是IE10的问题,这不应该像在任何浏览器中所写的那样工作。

<强>更新

由于IE 10中的错误修复,此答案可能不再适用。

请忽略此答案是错误的,因接受而无法删除。