Загрузка jQuery AJAX не выполняется в ASP.NET MVC Controller Action - PullRequest
3 голосов
/ 12 января 2010

У меня есть простая вещь: два 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 запускается, и если я возвращаю представление 'index' в действии контроллера для itemDetail, он отображает страницу, но никогда не выполняет jQuery.

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 12 января 2010

Вам нужно сделать URL относительно корня сайта, иначе ваши маршруты не будут правильными. Вероятно, для этого лучше всего использовать помощник Url.

<script type="text/javascript" language="javascript"> 
    $("#deptTickets").load("<%= Url.Action( "DepartmentTickets", "Items" ) %>"); 
    $("#recentTickets").load("<%= Url.Action( "RecentTickets", "Items" ) %>"); 
</script>
1 голос
/ 12 января 2010

Вы используете относительный URI, поэтому он будет добавлен к текущему URI. Поскольку это другое место, ваш запрос AJAX, вероятно, 404ing. Используйте сетевую панель Firebug или Fiddler, чтобы подтвердить это.

...