我已經研究瞭如何檢查請求是否通過C#中的AJAX發送,但它似乎不適用於我。我的代碼如下。我使用一種方法在客戶端AJAX頁面(在我的情況下,正在使用activeXobject)。 ajaxed頁面正在檢查ajax屬性serverside的請求,但是這兩個X-Requested-With屬性都沒有返回任何內容(打印時我得到空白)。想法?檢查Ajax請求
Ajax的方法(JavaScript)的
/*
* Ajax page loads with url
* @param url : URL to call for ajax page load
* @param element : Element ID to be updated
*/
function ajax(url, element) {
UtilLogger.log(HtmlLogger.INFO, "-AJAX Call for " + url + " in " + element + "-");
var ajx;
if (window.HXMLHttpRequest) {
UtilLogger.log(HtmlLogger.FINE, "Using XMLHttpRequest");
ajx = new XMLHttpRequest();
}
else {
UtilLogger.log(HtmlLogger.FINE, "Using ActiveXObject");
ajx = new ActiveXObject("Microsoft.XMLHTTP");
}
ajx.open("GET", url, true);
ajx.send();
ajx.onreadystatechange = function() {
if (ajx.readyState == 4 && ajx.status == 200) {
document.getElementById(element).innerHTML = ajx.responseText;
}
else if (ajx.readyState == 4 && ajx.status == 400) {
alert("Page Error. Please refresh and try again.");
}
else if (ajx.readyState == 4 && ajx.status == 500) {
alert("Server Error. Please refresh and try again.");
}
}
UtilLogger.log(HtmlLogger.INFO, "-END AJAX Call for " + url + " in " + element + "-");
}
阿賈克斯登錄檢查(C#)
/* Checks for ajax request validity
* @param HttpResponse resp : response to redirect if not ajax request
* @param HttpRequest req : request to check for ajax
*/
public static void checkAjax(HttpResponse resp, HttpRequest req)
{
if(req == null ||
(req["X-Requested-With"] != "XMLHttpRequest" &&
(req.Headers != null && req.Headers["X-Requested-With"] != "XMLHttpRequest"))){
// resp.Redirect("./ajaxerror.aspx");
resp.Write(req["X-Requested-With"] + ":" + req.Headers["X-Requested-With"]);
}
}
也許我只是想念一些東西,但爲什麼你要檢查'if(req == null ||'?不應該是'if(req!= null &&''?再次,也許我只是讀錯了(我主要是一個VB傢伙) – 2012-04-18 12:42:00
@Scott這只是一個額外的檢查,如果請求爲空,有一個問題,所以我繼續前進到我的ajax錯誤頁面 – steventnorris 2012-04-18 12:52:00
我看到那個被註釋掉了,我猜那裏還有其他的東西你也刪除了,只是根據你在那裏說的b/c if( req == null'進入你的代碼的resp.Write(req [「X-Requested-With」] ...'部分,並且會拋出一個錯誤。 – 2012-04-18 13:52:16