我在制作两个下拉列表时遇到了一些麻烦:
一切都很好,直到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。
答案 0 :(得分:0)
我不确定,但我认为变量在这里发生冲突
$.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>";
});
编辑还尝试提醒data[0].value
或data[0].description
以确保在客户端正确解析json字符串,否则您可能需要致电$.parseJson
返回的数据。
编辑2:您可以尝试的一件事是使用for循环
for(i=0;i<data.length;i++)
{
items += "<option value='" + data[i].value + "'>" + data[i].description + "</option>";
}