在MVC2中使用JSON填充下拉列表时未定义对象
本文关键字:下拉列表 未定义 对象 填充 JSON MVC2 | 更新日期: 2023-09-27 18:11:01
我在制作两个下拉列表时遇到了一些麻烦:
- 区域:所有区域
- 城市:属于区域 所选值的城市
一切都很好,直到City从JSON读取项目。未定义。
这是我的代码
$(document).ready(function () {
$('#AreaList').change(function () {
$.ajaxSetup({ cache: false });
var selectedItem = $(this).val();
if (selectedItem == "" || selectedItem == 0) {
//Do nothing
} else {
$.ajax({
url: '<%=Url.Content("~/") %>Administration/GetDropDownCity',
data: { item: $("#AreaList> option:selected").attr("value") },
dataType: 'json',
traditional: true,
type: 'POST',
success: function (data) {
var items = "";
$.each(data, function (i, data) {
items += "<option value='" + data.value + "'>" + data.description + "</option>";
});
$("#CityList").html(items);
$("#CityList").removeAttr('disabled');
}
});
}
});
});
Json确实存在,我检查了Firebug并列出如下:
"[{'"value'":'"107'",'"description'":'"KOTA DEPOK'"},{'"value'":'"141'",'"description'":'"KOTA JAKARTA SELATAN'"}]"
有什么办法可以解决这个问题吗?编辑
问题解决了:我使用jQuery.parseJSON()读取JSON
我不确定,但我认为这里有一个变量冲突
$.each(data, function (i, data) {
items += "<option value='" + data.value + "'>" + data.description + "</option>";
});
将枚举器中的data
更改为val
,例如
$.each(data, function (i, val) {
items += "<option value='" + val.value + "'>" + val.description + "</option>";
});
Edit:也尝试警告data[0].value
或data[0].description
,以确保json字符串在客户端正确解析,否则您可能不得不调用$.parseJson
返回的数据。
Edit 2:你可以尝试使用for循环
for(i=0;i<data.length;i++)
{
items += "<option value='" + data[i].value + "'>" + data[i].description + "</option>";
}