2010-01-12 90 views
3

我有一个简单的事情在这里:两个div和两个调用加载partials(控制器操作与PartialView作为结果)。jQuery AJAX加载不在ASP.NET MVC控制器上执行操作

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

这些项目都是在同一个控制器,你可以在布劳尔如下访问它们: http://[site]/items http://[site]/items/itemdetail

找出问题,我已经设置了指数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

您需要制作相对于网站根目录的网址,否则您的路线将不正确。为此,最好使用Url助手。

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

真棒,工作一种享受......应该想到这一点,因为我需要使用site.master中的Url助手来获取脚本运行的第一位。万分感谢。 干杯! -Jc – MisterJames 2010-01-12 15:50:23

+0

我运行了这段代码,并在浏览器中评估了输出,它显示了错误(与Craig的响应相关)。将原来发布的代码更改为以下作品: $(“#deptTickets”)。load(“/ items/DepartmentTickets”); 唯一的区别是项目控制器之前的正斜杠。 再次感谢。 -cc – MisterJames 2010-01-13 16:53:39

+0

只要应用程序不在网站的子文件夹中,它就会工作。如果应用程序不在文档根目录中,那么对相对于文档根目录的路径进行硬编码最终会在你不期望的时候咬你。这就是为什么我总是使用UrlHelper来生成路径。它了解应用程序的虚拟路径,并始终生成正确的URL。 – tvanfosson 2010-01-13 23:19:02

1

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

+0

谢谢,克雷格,会对你的回应有用,但我还不配; o)。干杯, -JC – MisterJames 2010-01-12 16:30:31

相关问题