2016-05-31 54 views
0

我想要做的通過jQuery AJAX基本自動完成,使用剃刀MVC 3和Visual Studio 2012(所有這些我以前從來沒有使用),我的代碼如下剃刀MVC 3阿賈克斯返回404

JS :

$(document).ready(function() {   
    $("#city").keyup(function() { 
     var input = $(this).val(); 
     getCities(input); 
    }); 
}); 

function getCities(input) { 
    var serviceURL = $("#autocompleteURL").val();  
    var url = 
     $.ajax({ 
      type: "POST", 
      url: serviceURL, 
      data: { 
       'guess': input 
      }, 
      success: function (data) { 
       alert('OK!!');  
      }, 
     }); 
} 

因爲我瞭解到,這是不可能的使用剃刀語法JS文件,我通過一個隱藏的輸入正從視圖中的值,如:

​​

控制器:

public class SearchController: Controller 
    { 
     public ActionResult AutoCompleteCity(string guess) 
     { 
      //database stuff here 
     } 
    } 

我不知道我是否缺少別的東西。任何幫助將不勝感激。謝謝!

+0

它需要是@ @ Url.Action(「AutoCompleteCity」,「Search」)',但不要添加隱藏的輸入。在具有id =「city」的元素中,使用'data-url =「@ Url.Action(」AutoCompleteCity「,」Search「)」'添加一個數據屬性並使用'var url = $(this) .data(url);' –

+0

很好的建議,謝謝! –

回答

2

控制器名稱的約定只是控制器的語義名稱,而不是文件路徑。取而代之的是:

Url.Action("AutoCompleteCity", "Controllers/SearchController") 

試試這個:

Url.Action("AutoCompleteCity", "Search") 

(另請注意,您可以使用調試工具在瀏覽器中檢查URL的AJAX調用中使用)