Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.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/jquery/88.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 通过AJAX填充下拉列表失败_Javascript_Jquery_Ajax_Model View Controller - Fatal编程技术网

Javascript 通过AJAX填充下拉列表失败

Javascript 通过AJAX填充下拉列表失败,javascript,jquery,ajax,model-view-controller,Javascript,Jquery,Ajax,Model View Controller,我希望在我的MVC项目中通过AJAX填充一个下拉列表。在这样做的过程中,“网络”调试工具在搜索我的url时显示404,并且总是属于我的AJAX调用的错误函数 我的Javascript位于视图的底部,如下所示: function PopulateTournamentDropdown() { $.ajax({ url: '/Leaderboard/PopulateTournamentDropDownList', type: 'POST'

我希望在我的MVC项目中通过AJAX填充一个下拉列表。在这样做的过程中,“网络”调试工具在搜索我的url时显示404,并且总是属于我的AJAX调用的错误函数

我的Javascript位于视图的底部,如下所示:

function PopulateTournamentDropdown() {
        $.ajax({
            url: '/Leaderboard/PopulateTournamentDropDownList',
            type: 'POST',
            dataType: 'json',
            contentType: 'application/json; charset=utf-8',
            success: function (data) {
                var ddlTournament = $("#ddlTournament");
                ddlTournament.empty();
                $.each(data, function (i, tournament) {
                    ddlTournament.append('<option value="' + tournament.Id + '">' + tournament.Name + '</option>');
                });
            },
            error: function () {
                alert('Failed to retrieve tournament.');
            }
        });
    }

    $(function () {

        $('#ddlTournament').change(PopulateTournamentDropdown);
        PopulateTournamentDropdown();
    });
public class LeaderboardController : Controller
    {
        public static string PopulateTournamentDropDownList()
        {
            var list = GetTournamentDetails();
            return JsonConvert.SerializeObject(list, Newtonsoft.Json.Formatting.Indented, JsonSetting);
        }
}
到目前为止,控制器中的方法从未被命中


请帮助。

我认为问题在于动作是一种静态方法。你能试试这个吗

public class LeaderboardController : Controller
{
    public ActionResult PopulateTournamentDropDownList()
    {
        var list = GetTournamentDetails();
        return Content(JsonConvert.SerializeObject(list, Newtonsoft.Json.Formatting.Indented, JsonSetting), "application/json");
    }
}

控制器操作方法应具有以下签名:

public ActionResult PopulateTournamentDropDownList()
{
  ...
}

请注意,这是一个实例(非静态)方法。

我不确定,但您是否缺少
“/leadboard/PopulateTournamentDropdown”中的
列表
?应该是
'/leadboard/PopulateTournamentDropdownList'
I appologize。我抄错了。我的URL中确实包含了这个列表,所以为了在MVC中进行任何AJAX调用,我必须返回一个ActionResult,它必须返回一个字符串?有没有办法在MVC中通过AJAX返回JsonResult或JSON字符串?这很有效。我的印象是MVC中所有返回ActionMethods的方法都必须返回视图。Content()对我来说是一个新概念。非常感谢。