假设我有兴趣检查使用XMLHttpRequest发送的参数。
例如,如果我发送了一个带有param'option = 1'的POST请愿书,我可以从响应中检索出来吗吗?
我检查了方法和属性,但没有找到方法来获取它。
答案 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所说,无法检索与响应请求一起发送的参数。所以我正在结束这个问题。
感谢所有帮助过的人!