XMLHttpRequest POST数据到WM后台,后台的post数组没有任何内容,麻烦W大大帮助下定位原因,通过其他方式post是有数据的,

marsColin
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);
2819 4 0
4个回答

marsColin

请W大大帮忙看下,是不是我XMLHttpRequest的姿势不正确,很疑惑啊,目前已经确认get方法在参数放在url后面是可以在WM的get数组里面获取到数据的

  • 暂无评论
blogdaren

xhr.setRequestHeader("Content-Type","application/json");  
表明发送给服务器的数据类型是 json 数据,那么发送给服务器的数据就必须是配套的json数据,不知道你那个pData是啥呢? 如果不是json,考虑使用JSON.stringify

  • marsColin 2018-12-03

    使用JSON.stringify也是一样的,非常感谢您的回答,

six

xhr.setRequestHeader("Content-Type","application/json");   这样好像不是标准的x-www-form-urlencode表单,所以获取不到。
不过我看源码 好像用这个获取$GLOBALS非标准表单

  • marsColin 2018-12-03

    发现用get方法,就是在url后面加参数的的方法,get数组里面是有数据,就是post不行,XMLHttpRequest四种post数据的方法都试过就是不行,心塞啊,坐等老大

  • marsColin 2018-12-03

    还是非常感谢您的答复,非常感谢

marsColin

百般尝试,在去掉xhr.setRequestHeader("Content-Type","application/json");  
后,使用formdata可以了
var pData = new FormData();
            pData.append("key","value");
            xhr.send(pData);

  • 暂无评论
年代过于久远,无法发表回答
🔝