我正在尝试使用ASP.NET MVC中的jquery动态地填充下拉列表中的项。
这是我的视图代码:
<select id="StartLocation" class="custom-select", onchange = "highlightMarkerById(this.value,0)">
<option value="">-Start Location-</option>
</select>
这是我调用来获取数据的函数:
function GetLocations() {
$.ajax({
type: "POST",
url: "/MV/GetLocations",
dataType: "json",
success: function (data) {
for (var j = 0; j < data.length ; j++) {
$('#StartLocation').append($('<option>', {
value: data[j].Value,
text: data[j].Text
}));
}
},
error: function () {
return "error";
}
});
}
在MV控制器中,我有如下的GetLocations
动作方法:
[HttpPost]
public JsonResult GetLocations()
{
List<vlocation> locationslist = DBManager.Instance.GetLocations();
List<SelectListItem> locations = new List<SelectListItem>();
foreach(var loc in locationslist)
{
locations.Add(new SelectListItem { Value = loc.displayName, Text = loc.displayName });
}
return Json(locations);
}
我在chrome中进行了调试,发现已经到达了success
,并且也在迭代for循环。但是我不明白为什么这些项目没有被添加到下拉列表中。如果我使用相同的代码将一些项添加到下拉列表中,而不是在success
中,则这些项将被添加。任何帮助都将不胜感激。
发布于 2016-12-27 18:20:01
可以尝试迭代您的json,如下所示,
var optionAppend = '';
$.each(data,function(i,el){
optionAppend += '<option value="'+el.Value+'">'+el.Text+'</option>';
});
$('#StartLocation').append(optionAppend);
发布于 2016-12-27 18:26:36
您可以尝试这样做:
for (var j = 0; j < data.length ; j++) {
$('#StartLocation').append("<option value="+data[j].Value+" >"+data[j].Text+"</option>");
}
发布于 2016-12-27 18:29:01
请尝试:-
for (var j = 0; j < data.length ; j++) {
$("#StartLocation").append($('<option></option>').val(data[j].Value).html(data[j].Text));
}
https://stackoverflow.com/questions/41343215
复制相似问题