jQuery AJAX加载未在ASP.NET MVC Controller Action上执行

时间:2010-01-12 15:43:22

标签: jquery asp.net-mvc asp.net-mvc-routing

我有一个简单的事情:两个div和两个加载部分的调用(使用PartialView作为结果的控制器操作)。

我正在处理两个控制器操作:Index和ItemDetail。 jQuery加载在Index操作返回的视图中工作,但不在ItemDetail上。

这些项目位于同一个控制器中,您可以在浏览器中访问它们,如下所示: http://[site]/items http://[site]/items/itemdetail

为了隔离问题,我设置了Index和ItemDetail来返回语法相同的视图:

<div id="deptTickets">Loading department tickets...</div>
<div id="recentTickets">Loading recent tickets...</div>

<script type="text/javascript" language="javascript">
    $("#deptTickets").load("items/DepartmentTickets");
    $("#recentTickets").load("items/RecentTickets");
</script>

.load方法触发并加载适当的索引部分视图,但不为ItemDetail加载。

我认为唯一不同的是路线。事实上,如果我在索引中返回'detail'视图,它会正确呈现并运行jQuery,如果我在itemDetail的控制器操作中返回'index'视图,它将呈现页面但从不执行jQuery。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

您需要创建相对于网站根目录的URL,否则您的路由将不正确。最好使用Url助手。

<script type="text/javascript" language="javascript"> 
    $("#deptTickets").load("<%= Url.Action( "DepartmentTickets", "Items" ) %>"); 
    $("#recentTickets").load("<%= Url.Action( "RecentTickets", "Items" ) %>"); 
</script>

答案 1 :(得分:1)

您正在使用相对URI,因此它将附加到当前URI。由于这是一个不同的地方,你的AJAX请求可能是404。使用Firebug的网络面板或Fiddler来确认这一点。