Javascript 通过AJAX填充下拉列表失败
我希望在我的MVC项目中通过AJAX填充一个下拉列表。在这样做的过程中,“网络”调试工具在搜索我的url时显示404,并且总是属于我的AJAX调用的错误函数 我的Javascript位于视图的底部,如下所示: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'
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()对我来说是一个新概念。非常感谢。