2009-06-17 65 views
2

我想我在JQuery和ASP.NET MVC中發現了一些非常奇怪的東西。JQuery的Ajax調用被解析到當前的控制器文件夾,而不是根文件夾

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 
     ); 
+0

他們在上一個問題中給出了這個答案。爲什麼要問一個新的? – Talljoe 2009-06-17 05:20:49

回答

9

沒有前導斜槓,URL的路徑是本地路徑,它是相對於頁面路徑解析的。就像您可能放入HTML中的任何其他URL一樣。

4

嘗試使用此爲您的網址:

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

注意前綴正斜槓。

0

jQuery並不知道關於MVC,控制器或動作的任何信息。你告訴它:「這裏是一個相對URL - 取當前頁面的URL並附加相應的URL。」您可能想要這樣說:

var newURL = "http://" + document.domain + "/ViewRecord/GetSoftwareChoice"; 
相關問題