Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.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
Javascript ASP.NET MVC应用程序中的AJAX调用未调用操作方法_Javascript_C#_Ajax_Asp.net Mvc_Razor - Fatal编程技术网

Javascript ASP.NET MVC应用程序中的AJAX调用未调用操作方法

Javascript ASP.NET MVC应用程序中的AJAX调用未调用操作方法,javascript,c#,ajax,asp.net-mvc,razor,Javascript,C#,Ajax,Asp.net Mvc,Razor,我有以下ASP.NET MVC.cshtml文件,在其中我执行以下操作: 从MyObject中获取Name&Id值,并从中创建一个DropDownList,当用户在下拉框中选择一个项目时,我尝试使用AJAX调用methodtocall,这是控制器中的一个方法,并尝试显示methodtocall返回的文本结果 @model List<MyWebApp.Models.MyObject> @if (Model.Count > 0) { using (Html.BeginFo

我有以下ASP.NET MVC.cshtml文件,在其中我执行以下操作: 从
MyObject
中获取Name&Id值,并从中创建一个
DropDownList
,当用户在下拉框中选择一个项目时,我尝试使用AJAX调用
methodtocall
,这是
控制器中的一个方法,并尝试显示
methodtocall
返回的文本结果

@model List<MyWebApp.Models.MyObject>

@if (Model.Count > 0)
{
    using (Html.BeginForm())
    {
        <div class="input-group mb-3">
            @Html.DropDownList("SelectFromDropdownList", Model.Select(i => new SelectListItem()
                {
                    Text = i.Name,
                    Value = i.Id
                }), "This is the default DropDownList option", new { @class="custom-select", @id="mydropdownid"})
            <script>
                $(function(){
                    $('#SelectFromDropdownList').change(function () {
                        var typeFeed = $(this).val();
                        // Perform AJAX call
                        $.get("@Url.Action("TheMethodToCall", "TheController")", { TypeFeed: typeFeed }, function (result){
                            @Html.DisplayText(result);
                            });
                        });
                    });
            </script>
        </div>
    }
}
  • 您的.change侦听器使用了错误的ID。下拉列表的ID为
    mydropdownid
    ,但在jQuery中您有
    $(“#SelectFromDropdownList”)。change
    。将其更改为
    $('#mydropdownid')。更改

  • 在AJAX响应中使用结果的方式不正确。您试图使用服务器端Razor/C#(在页面最初加载时执行)来处理在页面加载后很长时间内发生的响应。您只需要在响应函数中使用JavaScript


  • 您添加了新的{id=“mydropdownid”}
    ,生成了
    `因此您没有一个元素具有
    id=“SelectFromDropdownList”
    -因此脚本需要是
    $('#mydropdownid')。更改(函数(){
    和否-
    @Html.DisplayText(结果)
    将不起作用。要将结果添加到DOM中,您需要
    $(someElement).html(result)
    为什么有
    [WebMethod()]
    ?它应该是
    public ActionResult TheMethodToCall(){返回内容(“这是一个测试”);
    另外,您正在尝试将数据传递到函数
    {TypeFeed:TypeFeed}
    但是你的函数不接受任何参数。现在,当你在学习时,不要发送任何数据。这只会使事情复杂化。我觉得我说这句话很疯狂,但它仍然不起作用!我已经采纳了你的所有建议,但仍然不会调用MethodToCall
    方法调用(断点未在其内部命中)。可能是我缺少AJAX库吗?还是
    @Url.Action
    是使用的错误方法?对于
    Url.Action
    中的第二个参数,如果我有一个名为
    HouseController
    的控制器,我会将
    House
    HouseController
    作为此方法的第二个参数吗?谢谢您的回答。我很抱歉JS/AJAX非常新,因此您可以编辑代码,使其仅在响应函数中使用JavaScript吗?这取决于您希望对响应执行什么操作。一个示例可能是只显示带有响应所述内容的弹出/警报:
    function(result){alert(result);};
        [WebMethod()]
        public static string TheMethodToCall()
        {
            return "This is a test";
        }