不幸的是,我似乎只得到jQuery结果。我正在寻找通过AJAX传递参数的正确方法,不需要旧的浏览器回退,但请不要使用库。如果还有另一个我错过的帖子,请链接=)
我正在使用$,但它是一个自定义对象/什么,而不是jQuery。
$.ajax({
't':'POST',
'u':e,
'd':{ajax:'1'},
's':function(data){
console.log(data.response);
document.getElementById('mainc').innerHTML = data.response;
},
'e':function(data){
console.log(data);
}
});
哪个电话:
$.ajax = function(a){
if(!a.u){return false;};
a.t=a.t||"GET";
typeof a.a=='undefined'?true:a.a;
a.e=a.e||function(){return false;};
a.s=a.s||function(){return true;};
var x=new XMLHttpRequest();
x.open(a.t,a.u,a.a);
x.onreadystatechange=function(){
if(x.readyState===4){
if(x.status===200){
a.s(x);
}else{
a.e(x);
}
}
};
a.t==="post" ? x.setRequestHeader("Content-Type", "application/x-www-form-urlencoded") : null;
x.send(a.d);
}
x.send(a.d)
应该通过{ajax:'1'}
。我已经尝试了{'ajax':'1'}
和'ajax=1'
。不知道为什么我尝试传递的参数没有任何东西使它成为服务器端。我非常确定这些参数没有命中服务器,尽管请求似乎在没有问题的情况下发送和接收。
答案 0 :(得分:1)
答案 1 :(得分:1)
XMLHttpRequest.send()
,则 x.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
不接受javascript / JSON对象。
您应格式化为urlencoded变量,如下所述:
Query-string encoding of a Javascript Object
或使用x.setRequestHeader("Content-Type", "application/json")
,如建议的其他答案。
此外:
a.t==="post"
应为a.t==="POST"
,因为它不会因为区分大小写的检查而更改请求标头。
完整的工作代码(使用urlencoded数据):
$ = {}
$.ajax = function(a){
if(!a.u){return false;};
a.t=a.t||"GET";
typeof a.a=='undefined'?true:a.a;
a.e=a.e||function(){return false;};
a.s=a.s||function(){return true;};
var x=new XMLHttpRequest();
x.open(a.t,a.u,a.a);
x.onreadystatechange=function(){
if(x.readyState===4){
if(x.status===200){
a.s(x);
}else{
a.e(x);
}
}
};
a.t==="POST" ? x.setRequestHeader("Content-Type", "application/x-www-form-urlencoded") : null;
x.send(a.d);
}
$.ajax({
't':'POST',
'u':'/',
'd':"ajax=1",
's':function(data){
console.log(data.response);
document.getElementById('mainc').innerHTML = data.response;
},
'e':function(data){
console.log(data);
}
});