有没有办法从XMLHttpRequest响应中获取params?

时间:2017-03-08 15:20:52

标签: javascript ajax

假设我有兴趣检查使用XMLHttpRequest发送的参数。

例如,如果我发送了一个带有param'option = 1'的POST请愿书,我可以从响应中检索出来吗吗?

我检查了方法和属性,但没有找到方法来获取它。

2 个答案:

答案 0 :(得分:0)

触发XMLHTTPRequest并检查浏览器JS控制台中的响应对象(适用于Chrome / Firefox的F12)。

我相信数据不存在,至少我曾经为项目更改了XMLHttpRequest open()方法(当然,我可能只是太愚蠢而无法找到它)。这样,我的默认错误处理程序在向用户打印错误/向错误报告后端发送错误时知道原始URL。

从项目init-code中提取的粗略代码片段:

/**  
 * Check XMLHttpRequest availability
 */
var ajax = null;
var proto = null;
if (window.XMLHttpRequest) {
    ajax = new XMLHttpRequest ();
    proto = XMLHttpRequest.prototype;
} else if (window.ActiveXObject) {
    try {
        ajax = new ActiveXObject("Msxml2.XMLHTTP.6.0");
        proto = ActiveXObject("Msxml2.XMLHTTP.6.0").prototype;
    } catch (e) { }
}    

if (ajax == null) {
    alert ("Can not create AJAX object. You need a more recent browser!");
    return;
}    

/**  
 * Update ajax prototype to store the URL (for better error handling)
 */
try {
    var origOpen = proto.open;
    proto.open = function (method, url) {
        this._url = url; 
        return origOpen.apply (this, arguments);
    }    
} catch (e) {
    console.log ("Can not patch XMLHttpRequest to store URL. Console output will omit them...");
}   

您需要对传递给send()函数的POST数据进行调整。 请注意,该方法可能是糟糕的风格,我的JS风格可能更糟糕!

更好:但您总是可以将POST数据直接传递给回调函数,而不将其存储在XMLHTTPRequest对象中:

var postData = "SomeStuff-Foobar123";
var ajax = new XMLHttpRequest (); //add magic for other browsers here
ajax.open ("POST", "ajax.php", true);
ajax.onreadystatechange = function () {
    if (this.readyState != 4 || this.status != 200) {
        console.log ("Not ready, yet...");
        return 0;
    }
    //response is in this.responseText
    //but you can still access the parent objects!
    console.log ("Done with Code 200. POSTed data: " + postData);
}
ajax.send (postData);

答案 1 :(得分:0)

正如Bergi所说,无法检索与响应请求一起发送的参数。所以我正在结束这个问题。

感谢所有帮助过的人!