XMLHttpRequest POST数据到WM后台,后台的post数组没有任何内容,麻烦W大大帮助下定位原因,通过其他方式post是有数据的,
var xhr = new XMLHttpRequest();
xhr.timeout = 5000;
var requestURL = URL + '/' + apiName;
xhr.open("POST",requestURL, true);
xhr.setRequestHeader("Content-Type","application/json");
// xhr.setResponseType = "json";
xhr.onreadystatechange = function() {
if(xhr.readyState === 4 && xhr.status == 200){
try {
var ret = JSON.parse(xhr.responseText);
if(handler !== null){
if (typeof ret == 'object' && ret.hasOwnProperty("Auth") && ret.hasOwnProperty("randNum") && ret == checkAuth(ret)) {
handler(1,'',ret);
}else{
handler(-2,'请求异常','');
}
}
} catch (e) {
console.log("err:" + e);
handler(-2,'请求异常','');
}
}
};
var pData = new FormData();
pData.append("test","111");
xhr.send(pData);
4个回答
年代过于久远,无法发表回答
请W大大帮忙看下,是不是我XMLHttpRequest的姿势不正确,很疑惑啊,目前已经确认get方法在参数放在url后面是可以在WM的get数组里面获取到数据的
xhr.setRequestHeader("Content-Type","application/json");
表明发送给服务器的数据类型是 json 数据,那么发送给服务器的数据就必须是配套的json数据,不知道你那个pData是啥呢? 如果不是json,考虑使用JSON.stringify
使用JSON.stringify也是一样的,非常感谢您的回答,
xhr.setRequestHeader("Content-Type","application/json"); 这样好像不是标准的x-www-form-urlencode表单,所以获取不到。
不过我看源码 好像用这个获取$GLOBALS非标准表单
发现用get方法,就是在url后面加参数的的方法,get数组里面是有数据,就是post不行,XMLHttpRequest四种post数据的方法都试过就是不行,心塞啊,坐等老大
还是非常感谢您的答复,非常感谢
百般尝试,在去掉xhr.setRequestHeader("Content-Type","application/json");
后,使用formdata可以了
var pData = new FormData();
pData.append("key","value");
xhr.send(pData);