javascript - 无法解析 JSON 对象数组

标签 javascript jquery ajax arrays json

我因解析 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(''));
}

See example →

关于javascript - 无法解析 JSON 对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6300065/

相关文章:

javascript - Bootstrap : Slider not working

java - 使用 AJAX 的 Spring 4.0 表单验证问题

javascript - 带有回调的 Node Cron 在调用退出后出现 Cannot enqueue Handshake 错误

jquery - 自动完成jquery和SQL,ASP.NET

javascript - 加速选择器和方法

javascript - 满足条件时拉取数据属性列表

javascript - 无法让我的 post() 使用 jQuery Ajax 工作

javascript - 当其他 float DIV 被隐藏时,动画 float DIV 重新定位

javascript - 无法通过选定的单选按钮显示/隐藏 div

javascript - jQuery 不更新 DOM 元素 HTML