Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 行动可以';找不到控制器_Jquery_Asp.net Mvc_Razor_Jquery Ui Autocomplete - Fatal编程技术网

Jquery 行动可以';找不到控制器

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助手,它定义了一个文本框,用于为jQueryUI自动完成提供信息

@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);
            }
        });
    }
});