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)解决了这个问题