通过AJAX填充下拉菜单失败



我希望在我的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();
    });

My Controller如下:

public class LeaderboardController : Controller
    {
        public static string PopulateTournamentDropDownList()
        {
            var list = GetTournamentDetails();
            return JsonConvert.SerializeObject(list, Newtonsoft.Json.Formatting.Indented, JsonSetting);
        }
}

到目前为止,控制器中的方法从未被命中。

请帮。

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

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()
{
  ...
}

最新更新