我有一个简单的事情:两个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。
有什么想法吗?
答案 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来确认这一点。