我因解析 JSON 对象而损坏了我的大脑。 我有这个js:
function get_cities(id)
{
$('#def').hide();
$('#cities').html('');
$.get('/emprego/index.php/add/get_cities/'+id, null, onAjaxSuccess, "JSON" );
}
function onAjaxSuccess(data)
{
$.each(data, function(key, val)
{
data.push("<option value='"+key+"'>"+val+"</option>");
});
$('#cities').append(data.join(''));
}
此代码返回:
<select id="cities" name="cities">
[object Object],[object Object]
<option value="0">[object Object],[object Object]</option>
</select>
但是服务器响应是(我的意思是带有参数的函数的响应):
[[{"id":"1","name":"里斯本"},{"id":"2","name":"卡斯卡伊斯"}]]
如何解析对此 html 的响应:
<select id="cities" name="cities">
<option value="1">Lisboa</option>
<option value="2">Cascais</option>
</select>
谢谢!
最佳答案
由于 data
是一个双封闭数组,因此您必须在 data[0]
上运行 $.each
。您还需要将结果推送到 holder
数组而不是 data
本身。然后您需要传递 val
参数的适当键:
function onAjaxSuccess(data) {
var holder = [];
$.each(data[0], function(key, val) {
holder.push("<option value='" + val.id + "'>" + val.name + "</option>");
});
$('#cities').append(holder.join(''));
}
关于javascript - 无法解析 JSON 对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6300065/