Метод контроллера вызовов MVC3 от ajax - PullRequest
1 голос
/ 30 августа 2011

У меня есть следующий код:

$.ajax({
    type: "GET",
    url: "/Search/GetNewData"  //Controller/ActionMethod
   ---snip---
)};

Это прекрасно работает при запуске через localhost, однако при развертывании не может найти метод контроллера. Я думаю, что это проблема маршрутизации? Но, имея лишь небольшие ограниченные знания об использовании ASP.net, я был бы признателен за некоторые советы.

Спасибо.

Ответы [ 3 ]

3 голосов
/ 30 августа 2011

Вы действительно не хотите указывать URL-адрес непосредственно в вашем JavaScript.

Вам необходимо , чтобы использовать помощников;в противном случае, если вы измените свои маршруты, вам придется переписать все URL-адреса в вашем коде JavaScript.Кроме того, он не будет работать, если ваш веб-сайт размещен в виртуальном каталоге IIS (что, похоже, является проблемой здесь).

У вас есть пара решений, если ваш код JavaScript встроен в представление,просто используйте

$.ajax({
    type: 'GET',
    url: '@Url.Action("GetNewData", "Search")'
)};

Если он находится во внешнем файле JavaScript, вы можете, например, использовать атрибуты HTML5 data-* для предоставления URL-адреса своему коду JavaScript.

Например:

<div id="foo" data-update-url="@Url.Action("GetNewData", "Search")">
</div>

Тогда код JavaScript будет выглядеть примерно так:

var updateDiv = $('#foo');
$.ajax({
    type: 'GET',
    url: updateDiv.data('update-url'),
    success: function(data) {
       updateDiv.append(data);
    }
)};
2 голосов
/ 30 августа 2011

Следующий фрагмент будет работать как для виртуальных каталогов, так и для веб-сайтов.

var baseUri = '@Url.Content("~/")';
$.ajax({
    type: "GET",
    url: baseUri + "Search/GetNewData"  //Controller/ActionMethod
   ---snip---
)};

Вы также можете определить переменную baseUri в макете (прежде всего теги <script), чтобы иметь возможность использовать ее во всех включенных javascripts.

0 голосов
/ 30 августа 2011

Установите FireBug для FireFox.Откройте панель .NET и панели консоли.Запросите URL, чтобы увидеть, есть ли у вас какие-либо ошибки.Если ничего не найдено, то научитесь использовать отладчик.Это ни в коем случае не быстрое решение, но оно поможет вам в будущем решить подобные проблемы самостоятельно.Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...