jquery ajax$.post不工作IE10

jquery ajax$.post不工作IE10,jquery,ajax,internet-explorer,post,internet-explorer-10,Jquery,Ajax,Internet Explorer,Post,Internet Explorer 10,我试过两种方法 方式1 函数登录(){ var email=encodeURIComponent($(“#loginemail”).val(); var pass=encodeURIComponent($(“#密码”).val(); $.ajax({ url:“/user/login”, 类型:“POST”, 数据:{电子邮件:电子邮件,密码:pass}, 数据类型:“json” }).完成(登录登录); //$.post(“/user/login”,{email:email,密码:pass},

我试过两种方法

方式1

函数登录(){
var email=encodeURIComponent($(“#loginemail”).val();
var pass=encodeURIComponent($(“#密码”).val();
$.ajax({
url:“/user/login”,
类型:“POST”,
数据:{电子邮件:电子邮件,密码:pass},
数据类型:“json”
}).完成(登录登录);
//$.post(“/user/login”,{email:email,密码:pass},LoginDone);
}
方式2

这两种方法在chrome上都可以很好地工作,但由于某些原因,IE不会在
POST
中发送数据
{email:email,pass:pass}
,或者根本不发送数据

我在本地服务器和实时Web服务器上都进行了尝试,都获得了相同的结果

在这里使用IE10。

应该是

data: {"email":email, "password":pass}
您正在将变量的值作为键传递,因此,如果服务器端资源需要
email
,它实际上会看到该变量的值
encodeURIComponent($(“#loginemail”).val()

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

更新

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


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

无法修复@jQuery bug tracker:

在深入调试之后,我找到了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)});

IE-10不工作数据序列化=>$(此)。序列化()

 $('#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" >

试试这个:
对我有用。这是IE10的一个已知问题。

我在Win7 x64 SP1上遇到了与IE10(10.0.9200.16521)相同的问题。
我已经通过使用较新版本的jQuery(1.9.1代替1.8.3)解决了这个问题。

这将是一个很难解决的问题,因为IE10仍处于测试阶段。严格来说,
encodeURIComponent
调用应该是不必要的,因为jQuery将为您完成这项工作。如果使用它时没有,没有修复任何问题。将控制台检查请求与IE9或IE8视图进行比较,看看有什么不同。还将错误处理程序添加到$.ajax<代码>“不工作”不是很多信息,我可以从我的代码中看出问题所在(不使用JSON代码,但使用'object.varible=value'),其他人可以重新编写。$。post(“test.php”,{name:“John”,time:“2pm”});如果你没有命名一个可变的email和pass,email和pass将起作用。因此,如果不将其加引号,则键将是该变量的值。不,但这是一个有效的对象文本
{“email”:email,“password”:pass}
,因此,请按此编码。作为一种更正,这个问题只存在于电子邮件中。您的密码应按原样工作。我知道你所说的JQuery文档是什么意思,但它的工作原理和我上面写的一样好。Javascript对象文本中的键可以不带引号,只要它们不是保留字。
电子邮件
密码
均未保留。因此,IE10的问题肯定出在别处——可能不是很明显。也就是说,建议避免使用
密码
(以及许多其他非保留字)。
 $('#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;
    });
  <meta http-equiv="x-ua-compatible" content="IE=9" >