Вызов JQuery Ajax разрешается в текущей папке контроллера, а не в корневой - PullRequest
2 голосов
/ 17 июня 2009

Я думаю, что нашел что-то очень странное в JQuery и ASP.NET MVC.

Как уже упоминалось в , этот вопрос , у меня есть следующий код 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 ]

9 голосов
/ 17 июня 2009

без косой черты, путь URL является локальным путем, и он разрешается относительно пути страницы. как и любой другой URL, который вы могли бы вставить в свой HTML.

4 голосов
/ 17 июня 2009

Попробуйте использовать это как ваш URL:

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

Обратите внимание на префикс прямой косой черты.

0 голосов
/ 17 июня 2009

jQuery ничего не знает о MVC, контроллерах или действиях. Вы говорите: «Вот относительный URL - возьмите URL текущей страницы и добавьте к нему относительный URL». Вы, вероятно, хотите сказать что-то вроде:

var newURL = "http://" + document.domain + "/ViewRecord/GetSoftwareChoice";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...