【发布时间】:2020-06-08 14:48:29
【问题描述】:
我有两个下拉菜单。一个是车辆品牌
<select id="vehicleMake" name="VehicleMake">
@foreach (var item in Model.Cars)
{
if (@item.Category == 1072)
{
<option value="@item.UniqueId">@item.Description</option>
}
}
</select>
另一个是空的,应该用车辆模型填充
@Html.DropDownListFor(model => model.VehicleModel, Enumerable.Empty<SelectListItem>(), "Select your model", new {@id="vehicleModel" })
这是我的控制器:
[HttpPost]
public JsonResult GetVehicleModels(string vehicleMake)
{
var vehicleModels = db.Glossaries.Where(x => x.VehicleMakeId.Contains(vehicleMake)).Select(x => x.Description).Distinct().ToList();
SelectList list = new SelectList(vehicleModels);
return Json(new { Success = true, Result = list }, JsonRequestBehavior.AllowGet);
}
这是 AJAX 调用:
<script type="text/javascript">
$("#vehicleMake").on('change', function () {
alert($(this).val());
$.ajax({
type: "POST",
url: "/Registration/GetVehicleModels",
data: JSON.stringify({ 'vehicleMake': $(this).val() }),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (result) {
result = $.parseJSON( results );
var toAppend = '';
$.each(result,function(i,o){
toAppend += '<option>' + o.Text + '</option>';
});
$('#vehicleModel').append(toAppend);
},
failure: function (response) {
alert("failure");
},
error: function (response) {
alert("error" + response.responseText);
}
});
});
</script>
This is the results I'm getting in Developer Tools in Chrome (when 'Chevrolet' is chosen)
Success: true
Result: [{Disabled: false, Group: null, Selected: false, Text: "BROUGHAM", Value: null},…]
0: {Disabled: false, Group: null, Selected: false, Text: "BROUGHAM", Value: null}
Disabled: false
Group: null
Selected: false
Text: "BROUGHAM"
Value: null
下拉列表中填充了“未定义”。我做错了什么?
【问题讨论】:
-
在
success回调中,你有一个名为result的参数,然后你解析一个名为results的东西,据我所知,它在任何地方都没有定义。 -
@TKharaishvili 我停下来,它说:断点目前不会被击中。没有为此文档加载任何符号。
-
我添加了一条新评论,请看一下。
-
不,将
results更改为result并没有改变任何东西。 -
尝试
$.each(result.Result, ...result参数,我认为,是具有Success和Result两个属性的参数,这意味着result.Result是您要迭代的那个。
标签: c# jquery json ajax model-view-controller