2012-09-19 32 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

相关问题