ASP.使用jQueryAJAX的NetMVC路由问题

本文关键字:路由 问题 NetMVC 使用 jQueryAJAX ASP | 更新日期: 2023-09-27 18:00:01

我的页面是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)
                    });
                }
            });
        });

ASP.使用jQueryAJAX的NetMVC路由问题

绝对在ASP中处理URL时总是使用URL助手。NET MVC。绝对从未像您那样硬编码URL。

因此:

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

如果这是在一个单独的javascript文件中,则可以在#example:上使用HTML5 data-*属性

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

然后在单独的js中,您可以使用.data()方法:

"sAjaxSource": $('#example').data('url')

我认为你的路径应该是

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

getdata不应该是像getdata.php或之类的文件名吗

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

您有没有尝试在Ajax Source之前加一个前导斜杠?

"sAjaxSource": "/Home/GetData/"

更新

正如下面的评论中所说,对URL进行硬编码可能会导致以后出现问题。

Darin已经发布了关于使用内置URL助手的帖子,所以我不会编辑我的帖子来包含这些信息。我做这件事的方式与这里记录的略有不同:

创建UrlHelper的扩展方法以从Route 生成您的url

我发现这种工作方式在与前端团队合作时非常有帮助。他们发现理解Url.RequestedPage()格式真的很容易,这意味着他们不需要我的帮助,每次他们想链接或请求什么。