【发布时间】:2010-03-11 04:55:13
【问题描述】:
我先把代码sn-ps放在这里。我只是在使用 Visual Studio 开箱即用的 ASP.NET MVC 项目。所以我只是把我添加的sn-ps:
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 请求,但事实并非如此异步。 Opera 也不起作用,所以我认为这是同样的问题。但是,上面的代码在 IE 8、Chrome 和 Safari 中运行良好。
在 localhost 上,所有上述浏览器都按预期工作,包括 Firefox 和 Opera——它们都收到“Got ajax request!”作为服务器的响应。
任何人都知道这里发生了什么以及如何解决它?我正在寻找一个真正的解决方案,或者至少解释发生了什么以及为什么。
【问题讨论】:
-
您是否尝试过使用 Fiddler/Wireshark 来更好地了解请求/响应?
-
@Pierreten:我们说话的时候我在搞砸它。如果有任何新发现,我会在这里发布。
标签: asp.net-mvc firefox jquery opera