假設我有興趣檢查使用XMLHttpRequest發送的參數。有沒有辦法從XMLHttpRequest響應中獲取參數?
例如,如果我發送POST請求param'option = 1',我可以從響應中檢索嗎?
我檢查了方法和屬性,但沒有看到獲取它的方法。
假設我有興趣檢查使用XMLHttpRequest發送的參數。有沒有辦法從XMLHttpRequest響應中獲取參數?
例如,如果我發送POST請求param'option = 1',我可以從響應中檢索嗎?
我檢查了方法和屬性,但沒有看到獲取它的方法。
正如BERGI說這是不可能的,以檢索參數與響應請求一起發送。所以我正在結束這個問題。
感謝大家幫助!
Fire a XMLHTTPRequest
並檢查瀏覽器的JS控制檯(F12 for Chrome/Firefox)中的響應對象。
我相信數據不存在,至少我曾經改變過一個項目的XMLHttpRequest
open()
方法(當然,我可能只是太傻而無法找到它)。這樣,當向用戶打印錯誤/向錯誤報告後端發送錯誤時,我的默認錯誤處理程序知道原始URL。
粗糙的代碼片段,從項目初始化拉代碼:
/**
* 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);
不,響應是響應而不是請求。但是,您應該能夠簡單地記住您發送的參數,並將它們與響應一起傳遞給檢查器。 – Bergi
你需要提供更多的上下文:XMLHttpRequest在客戶端,你用什麼來在服務器端接收請求?順便說一下,您需要檢查請求中的參數而不是響應。 – Mosd
關鍵是獲取請求中發送的參數,而不必將它們存儲在變量中。 儘管如此,感謝您的答覆。 – Vers