未在ASP.NET MVC控制器上执行jQuery AJAX加载操作
这里有一件简单的事情:两个div和两个调用来加载partials(结果为PartialView的控制器操作) 我正在处理两个控制器操作:索引和ItemDetail。jQuery加载在Index操作返回的视图中工作,但不在ItemDetail上工作 这些项目位于同一控制器中,您可以在浏览器中访问它们,如下所示: 为了隔离问题,我设置了Index和ItemDetail以返回具有相同语法的视图:未在ASP.NET MVC控制器上执行jQuery AJAX加载操作,jquery,asp.net-mvc,asp.net-mvc-routing,Jquery,Asp.net Mvc,Asp.net Mvc Routing,这里有一件简单的事情:两个div和两个调用来加载partials(结果为PartialView的控制器操作) 我正在处理两个控制器操作:索引和ItemDetail。jQuery加载在Index操作返回的视图中工作,但不在ItemDetail上工作 这些项目位于同一控制器中,您可以在浏览器中访问它们,如下所示: 为了隔离问题,我设置了Index和ItemDetail以返回具有相同语法的视图: <div id="deptTickets">Loading department ticke
<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运行,并且如果我在itemdail的控制器操作中返回'index'视图,那么它呈现页面但从不执行jQuery
有什么想法吗?您使用的是相对URI,因此它将附加到当前URI中。因为那是另一个地方,所以您的AJAX请求可能是404。使用Firebug的网络面板或Fiddler来确认这一点。您需要使URL相对于站点根目录,否则您的路由将不正确。为此,最好使用Url帮助器
<script type="text/javascript" language="javascript">
$("#deptTickets").load("<%= Url.Action( "DepartmentTickets", "Items" ) %>");
$("#recentTickets").load("<%= Url.Action( "RecentTickets", "Items" ) %>");
</script>
$(“#deptTickets”)。加载(“”);
$(“#最近票据”)。加载(“”);
太棒了,做了一件好事……我应该想到这一点,因为我需要使用site.master中的Url帮助程序来运行脚本。非常感谢。干杯-jci运行了这段代码并在浏览器中评估了输出,结果显示了错误(也与Craig的响应有关)。将我最初发布的代码更改为以下代码:$(“#deptickets”).load(“/items/DepartmentTickets”);唯一的区别是items控制器前面的正斜杠。再次感谢-只要应用程序不在网站的子文件夹中,它就可以工作。如果应用程序不在文档根目录中,那么硬编码一个相对于文档根目录的路径会在您不期望它的时候咬到您。这就是为什么我总是使用UrlHelper来生成路径。它知道应用程序的虚拟路径是什么,并且总是生成正确的url。谢谢,Craig,你的回答会很有用,但我还不配;o) 。干杯,-jc