jquery ajax$.post不工作IE10
我试过两种方法 方式1jquery 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},
函数登录(){
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" >