Проблема маршрутизации ASP.Net MVC с помощью jQuery AJAX - PullRequest
3 голосов
/ 23 июня 2011

Моя страница - domain.com/home/details/1

В моем вызове jQuery AJAX у меня есть следующее, однако, когда он делает этот вызов, он звонит на domain.com/home/details/home/getdata

Что я могу сделать, чтобы он разрешился правильно?

$(document).ready(function () {

            oTable = $('#example').dataTable({
                "bServerSide": true,
                "sAjaxSource": "Home/GetData/",
                "bProcessing": true,
                "bPaginate": true,
                "sPaginationType": "full_numbers",
                "bFilter": true,
                "bAutoWidth": false,
                "fnServerData": function (sSource, aoData, fnCallback) {
                    /* Add some extra data to the sender */
                    //aoData.push({ "filtervalue": $('#filtervalue').val(), "Options": $('#Options').val() });
                    $.getJSON(sSource, aoData.concat($('form').serializeArray()), function (json) {
                        /* Do whatever additional processing you want on the callback, then tell DataTables */
                        fnCallback(json)
                    });
                }
            });

        });

Ответы [ 3 ]

17 голосов
/ 23 июня 2011

Абсолютно всегда использовать URL-помощники при работе с URL-адресами в ASP.NET MVC.Абсолютно никогда URL-адреса жестких кодов, как вы сделали.

Итак:

"sAjaxSource": "@Url.Action("GetData", "Home")"

, и если это в отдельном файле JavaScript, вы можете использовать атрибуты HTML5 data-* в#example:

<div id="example" data-url="@Url.Action("GetData", "Home")">
    ...
</div>

и затем в вашем отдельном js вы можете использовать метод .data():

"sAjaxSource": $('#example').data('url')
0 голосов
/ 23 июня 2011

Я думаю, что ваш путь должен быть

"sAjaxSource": "/home/details/home/getdata",

и не должен getdata быть именем файла, таким как getdata.php или что-то

"sAjaxSource": "/home/details/home/getdata.php",
0 голосов
/ 23 июня 2011

Пробовали ли вы поставить начальную косую черту перед источником Ajax?

"sAjaxSource": "/Home/GetData/"

ОБНОВЛЕНИЕ

Как указано в комментариях ниже, жесткое кодирование URL может вызвать проблемычуть позже.

Дарин уже писал об использовании встроенных помощников URL, поэтому я не буду редактировать свой пост, чтобы включить эту информацию.Я делаю это немного по-другому, как описано здесь:

Создание методов расширения UrlHelper для генерации вашего URL-адреса из маршрута

Я нашел этот способ работы следующимчрезвычайно полезно при работе с командой переднего конца.Они обнаружили, что действительно легко понять формат Url.RequestedPage(), и это означало, что им не нужна моя помощь каждый раз, когда они хотят связать или запросить что-то.

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