JQuery Ajax调用被解析为当前的Controller文件夹,而不是根文件夹

时间:2009-06-17 04:29:23

标签: jquery asp.net-mvc

我认为我在JQuery和ASP.NET MVC中发现了一些非常奇怪的东西。

this question中所述,我有以下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
        );

3 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:4)

尝试将此作为您的网址:

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

注意带前缀的正斜杠。

答案 2 :(得分:0)

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

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