Я исследовал, как проверить, отправлен ли запрос через AJAX на C#, но он, похоже, не работает для меня. Мой код ниже. Я использую метод для AJAX для страницы на клиентских компьютерах (в моем случае используется activeXobject). Страница ajaxed проверяет запрос свойств ajax serverside, но ни одно из свойств X-Requested-With ничего не возвращает (я получаю пробелы при распечатке). Идеи?Проверить для Ajax Request
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 + "-");
}
Ajax Войти Check (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). –
@Scott Это всего лишь небольшая дополнительная проверка. Если запрос имеет значение NULL, возникает проблема, поэтому я перехожу вперед и перехожу к моей странице ошибок ajax. – steventnorris
Я вижу, что это закомментировано. Я предполагаю, что там было еще что-то, что вы тоже удалили. Просто произнесите b/c в соответствии с тем, что у вас там, если (если req == null' переходит в 'resp.Write (req [" X-Requested-With "] ...' часть вашего кода и будет выдавать ошибку. –