我试过这两种方式。
方式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。
答案 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中的错误修复,此答案可能不再适用。
请忽略此答案是错误的,因接受而无法删除。