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中处理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()
格式真的很容易,这意味着他们不需要我的帮助,每次他们想链接或请求什么。