我已经研究了如何检查请求是否通过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