jquery ajax $ .post不工作​​IE10

我试过这两种方式。

方式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不会在POST发送数据{email:email, password:pass} ,或者根本不会。

我已经在本地服务器和实时网络服务器上尝试过,两者都有相同的结果。

在这里使用IE10。

 data: {email:email, password:pass} 

应该

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

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

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

更新

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

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

无法修复@jQuery bug跟踪器: IE10 / Windows 8上的AJAX Post

经过深度调试后,我找到了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)}); 

IE-10无法正常工作数据serialize => $(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一样工作。

   

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

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