我希望在我的MVC项目中通过AJAX填充下拉列表。这样,“网络”调试工具在搜索我的网址时显示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);
}
}
截至目前,控制器中的方法永远不会被击中。
请帮助。
答案 0 :(得分:1)
我认为问题在于Action是一个静态方法。你能试试这个:
public class LeaderboardController : Controller
{
public ActionResult PopulateTournamentDropDownList()
{
var list = GetTournamentDetails();
return Content(JsonConvert.SerializeObject(list, Newtonsoft.Json.Formatting.Indented, JsonSetting), "application/json");
}
}
答案 1 :(得分:1)
控制器操作方法应具有以下签名:
public ActionResult PopulateTournamentDropDownList()
{
...
}
注意,它是实例(非静态)方法。