2012-09-19 83 views
0

我有一個Ajax調用已在託管網站上工作正常,直到最近控制器的名字沒有被上Ajax調用傳遞MVC3

像這樣定義

$.ajax({ 
     url: 'GetItemsForCountry', 
     type: 'GET', 
     data: "country=" + country, 
     success: function (items) { 
      $("#Items").empty(); 
      $("#Items").attr("disabled", false) 
      $.each(items, function (i, c) { 
       $("#Items").append($('<option></option>').val(c.Value).html(c.Text)) 
      } 
       ); 
     }) 

當我嘗試和調試它在本地VS它的正常工作,我看到它通過我的控制器就行了...

http://localhost:9000/Home/GetItemsForCountry?country=USA 

,當我與它的託管服務器上運行它,它正在通過爲

http://servername/GetItemsForCountry?country=USA. 

以前沒有這樣做過。

有沒有人有一個線索,爲什麼?或者知道一個MapRoute的方法來使這不會給404錯誤?

感謝您的任何幫助。

大衛

+0

在服務器上調用了哪個URL?那在本地主機上呢? – parKing

+0

嗯..這恰好是主頁只是www.servername.com – DavieDave

+0

如果我把在完整的URL www.servername.com/Home/Index,然後運行它...它精緻和Ajax調用沒有按不會失敗 – DavieDave

回答

0

如果將URL更改爲/home/getitemsforcountry它可以在服務器上運行並在本地運行。只要使用Getitemsforcountry就會嘗試將這些內容粘貼到您所在網站的當前「區域」。

+0

謝謝我欣賞它 – DavieDave

0

這是您正在使用,所以它要使用過的電流路徑是什麼一個相對URL。由於這是一個home url我假設它也使用默認路由。這聽起來像你的本地主機測試是去http://localhost:28347/home/index,而不是隻有根網址,而你的服務器測試是去/的根網址。解決此問題的一種方法是使用

$.ajax({ 
    url: '@Url.RouteUrl(new { controller = "Home", action= "GetItemsForCountry"})', 
    type: 'GET', 
    data: "country=" + country, 
    success: function (items) { 
     $("#Items").empty(); 
     $("#Items").attr("disabled", false) 
     $.each(items, 
      function (i, c) { 
       $("#Items").append($('<option></option>').val(c.Value).html(c.Text)) 
      } 
     ); 
}) 

無論呼叫如何,都應該爲您解決路由問題。

+0

嗯我試試這個,並得到路徑錯誤中的非法字符。 – DavieDave

+0

我認爲這是因爲在進行ajax調用之前它沒有解決url操作... http:// localhost:28347/Home/@Url.RouteUrl(new%20%7B%20controller%20 =%20%22Home%22 ,%20action =%20%22GetItemsForCountry%22%7D)?country = USA – DavieDave

+0

這個調用位於何處?在一個JavaScript文件或頁面上? – Buildstarted

相關問題