3

这两种方法我都试过了。

方式一

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);
}

方式二

    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。

4

6 回答 6

3

无法修复 @jQuery 错误跟踪器:IE10 / Windows 8 上的 AJAX 发布

于 2012-12-05T16:08:47.180 回答
0

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

不要将 POST 与 GET 一起使用。

$.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)});
于 2012-12-28T11:53:31.863 回答
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;
    });

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

  <meta http-equiv="x-ua-compatible" content="IE=9" >
于 2013-04-05T10:33:03.113 回答
0

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

于 2013-04-07T14:02:40.700 回答
0

我在 Win7 x64 SP1 上使用 IE 10 (10.0.9200.16521) 时遇到了同样的问题。我通过使用更新版本的 jQuery(1.9.1 代替 1.8.3)解决了这个问题

于 2013-04-07T14:26:53.770 回答
-2

data: {email:email, password:pass}

应该

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

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

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

更新

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

请忽略此答案,这是错误的,并且由于被接受而无法删除。

于 2012-06-28T00:09:32.137 回答