jqueryajax调用将解析为当前控制器文件夹,而不是根文件夹

jqueryajax调用将解析为当前控制器文件夹,而不是根文件夹,jquery,asp.net-mvc,Jquery,Asp.net Mvc,我想我在JQuery和ASP.NETMVC中发现了一些非常奇怪的东西 如中所述,我有以下JQuery代码: $(function () { $("#username").click(function () { $.getJSON("ViewRecord/GetSoftwareChoice", { username: '123' }, function (data) { alert(data);

我想我在JQuery和ASP.NETMVC中发现了一些非常奇怪的东西

如中所述,我有以下JQuery代码:

$(function () {
    $("#username").click(function () {
        $.getJSON("ViewRecord/GetSoftwareChoice", { username: '123' },
            function (data) {
                alert(data);
            });
    });
});
ViewRecord
是控制器,
GetSoftwareChoice
是操作方法。但为此生成的URl是

http://localhost/ViewRecord/ViewRecord/GetSoftwareChoice?username=123
太神奇了,不是吗

为什么会这样

这是我的路线:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(
    "Default",                                              // Route name
    "{controller}/{action}/{id}",                           // URL with parameters
    new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
);

尝试将此用作您的URL:

 $.getJSON("/ViewRecord/GetSoftwareChoice", // etc

请注意前缀正斜杠。

jQuery对MVC、控制器或操作一无所知。您告诉它:“这里是一个相对URL-获取当前页面的URL并将相对URL附加到其中。”您可能想说:

var newURL = "http://" + document.domain + "/ViewRecord/GetSoftwareChoice";

如果没有前导斜杠,URL的路径是本地路径,它是相对于页面路径解析的。就像您可能放入HTML中的任何其他URL一样。

他们在您前面的问题中为您提供了答案。为什么要问一个新的?