Jquery 行动可以';找不到控制器
我有一个Html助手,它定义了一个文本框,用于为jQueryUI自动完成提供信息Jquery 行动可以';找不到控制器,jquery,asp.net-mvc,razor,jquery-ui-autocomplete,Jquery,Asp.net Mvc,Razor,Jquery Ui Autocomplete,我有一个Html助手,它定义了一个文本框,用于为jQueryUI自动完成提供信息 @Html.TextBox("txtSearchArg") javascript位于/Scripts文件夹中 $("#txtSearchArg").autocomplete({ source: function (request, response) { var clinician = new Array(); $.ajax({ cache:
@Html.TextBox("txtSearchArg")
javascript位于/Scripts文件夹中
$("#txtSearchArg").autocomplete({
source: function (request, response) {
var clinician = new Array();
$.ajax({
cache: false,
type: "POST",
url: '@(Url.Action("Autocomplete", "Home"))'
data: { "term": request.term },
success: function (data) {
alert("in success");
response(clinician);
},
error: function (response) {
alert(response.responseText);
},
failure: function (response) {
alert(response.responseText);
}
});
}
});
我正在使用@Url.Action方法
在我的HomeController中,我有一个自动完成方法
[AcceptVerbs(HttpVerbs.Post)]
public JsonResult Autocomplete(string term)
{
... JSON gets created here
return Json(result3, JsonRequestBehavior.AllowGet);
}
当我像上面的代码一样向$.ajax方法传递url参数时,响应是404,找不到。在调试中,动态js显示为“url:'/Home/Autocomplete'”。但是当我这样传递它时(从动态js复制):
它发现HomeController自动完成方法很好
如何使用Url.Action方法使其找到HomeController和Autocomplete方法?您不能在javascript文件中使用razor语法。您需要将代码移动到视图中,以便正确渲染 一个可能的解决方案可能是这样的: 在您的视图中(例如,cshtml文件):
您是否添加了[httpPost]?
url: '/Home/Autocomplete'
<script>
var autoCompleteUrl = '@(Url.Action("Autocomplete", "Home"))';
</script>
$("#txtSearchArg").autocomplete({
source: function (request, response) {
var clinician = new Array();
$.ajax({
cache: false,
type: "POST",
url: autoCompleteUrl
data: { "term": request.term },
success: function (data) {
alert("in success");
response(clinician);
},
error: function (response) {
alert(response.responseText);
},
failure: function (response) {
alert(response.responseText);
}
});
}
});