#c# #asp.net-mvc #drop-down-menu
#c# #asp.net-mvc #выпадающее меню
Вопрос:
у меня возникли некоторые проблемы при создании двух выпадающих списков:
- Область: все области
- Город: город, который принадлежит выбранному значению области
все в порядке, пока City не прочитает элементы из JSON. Все элементы в выпадающем списке City не определены.
Вот мой код
$(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.
Ответ №1:
Я не уверен, но я думаю, что здесь конфликтует переменная
$.each(data, function (i, data) {
items = "<option value='" data.value "'>" data.description "</option>";
});
в enumerator измените 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>";
}
Комментарии:
1. Я использовал alert (data.value), чтобы убедиться, что данные можно просмотреть. и результат не определен, такой же, как в выпадающем списке
2. вы пробовали менять имя переменной с
data
наval
или что-то еще?