Позвольте мне сначала поместить фрагменты кода здесь. Я просто использую проект ASP.NET MVC Visual Studio создает из коробки. Поэтому я просто добавляю фрагменты, которые я добавил к нему:
Раздел сайта Site.master:
<head runat="server">
<title><asp:ContentPlaceHolder ID="TitleContent" runat="server" /></title>
<script src="../../Scripts/jquery-1.3.2.min.js" type="text/javascript"></script>
<link href="../../Content/Site.css" rel="stylesheet" type="text/css" />
<script src="../../Scripts/test.js" type="text/javascript"></script>
<script type="text/javascript">$(document).ready(ready);</script>
</head>
Содержание test.js:
function ready(){
$.get("/Home/TestAjax", ajaxResponse);
}
function ajaxResponse(data){
alert("got response from server: " + data);
}
Метод в HomeController:
public String TestAjax()
{
if (Request.IsAjaxRequest())
{
return "Got ajax request!";
}
else
{
return "Non-ajax request";
}
}
Теперь проблема, с которой я сталкиваюсь в Firefox 3.5.30729 (Firebug), заключается в том, что когда ajax-запрос выходит из строя, IIS 7 на удаленном компьютере отправляет Http 302 обратно, который выполняет перенаправление и вызывает другой запрос get, но это не так асинхронный. Опера тоже не работает, поэтому я предполагаю, что это та же проблема. Однако приведенный выше код прекрасно работает в IE 8, Chrome и Safari.
На локальном хосте все вышеперечисленные браузеры работают должным образом, включая Firefox и Opera - все они получают "Got ajax request!" как ответ от сервера.
У кого-нибудь есть идеи, что здесь происходит и как это исправить? Я ищу реальное решение или хотя бы объяснение того, что происходит и почему.