我在拉入JSON数据以填充两个单独的选择字段(国家/地区和城市)。
提交表格时,我得到:
Cannot read property 'value' of undefined
我尝试使用以下方法重置数据:
data.countries = data[0];
data = data[0];
之前/之后,它返回:
Uncaught TypeError: Cannot read property 'length' of undefined
以下是我用来检索数据的代码片段
$.ajax({
url: myAPI,
type: 'POST',
success: function (data) {
$.each(data.countries, function (index, value) {
country.append('<option value="' + value.name + '">' + value.name +'</option>');
});
country.on('change', function() {
var self = $(this).val();
city.find('option').remove();
for(var i = 0; i < data.countries.length; i++) {
if(data.countries[i].name == self) {
$.each(data.countries[i].metroAreas, function (index, value) {
city.append('<option value="' + value.name+'">' + value.name +'</option>');
});
}
}
});
}
});
答案 0 :(得分:1)
您应该告诉jQuery使用dataType
option将结果解析为JSON。
当省略时,jQuery将根据Content-Type
响应头猜测数据类型。这是一个常见的问题,服务器没有设置此标头或设置不正确(例如text/html
)。
$.ajax({
url: myAPI,
type: 'POST',
dataType: 'json',
success: function (data) {
$.each(data.countries, function (index, value) {
country.append('<option value="' + value.name + '">' + value.name +'</option>');
});
country.on('change', function() {
var self = $(this).val();
city.find('option').remove();
for(var i = 0; i < data.countries.length; i++) {
if(data.countries[i].name == self) {
$.each(data.countries[i].metroAreas, function (index, value) {
city.append('<option value="' + value.name+'">' + value.name +'</option>');
});
}
}
}); }
});