如何读取JSON数据并获取其中的name与status字段
问题原因&修复方案
你的代码存在3处核心问题,调整后即可正常读取字段:
dataType设置为text导致返回的JSON字符串没有被自动解析为JavaScript对象,无法直接读取属性- 你错误尝试读取响应体的
status字段判断HTTP状态,HTTP状态码存放在AJAX成功回调的第三个参数jqXHR中,且你的业务状态OK存放在返回数组的第一个元素内 - 直接遍历整个返回数组会读到第一个无
name字段的状态对象,只有索引1及之后的元素包含name字段
修正后代码
$.ajax({ url:'url', method: 'get', // 改为json让jQuery自动解析返回结果为JS对象 dataType: 'json', success: function(response, statusText, jqXHR){ // 先判断HTTP状态码是否正常 if (jqXHR.status === 200) { // 读取业务状态,在数组第一个元素中 const bizStatus = response[0].status; console.log('业务状态:', bizStatus); // 从索引1开始遍历读取name字段 for (let i = 1; i < response.length; i++) { alert(response[i].name); } // 如果你需要用$.each遍历也可以这么写: // $.each(response, function(i, data) { // // 跳过第一个状态元素 // if (i === 0) return; // alert(data.name); // }); } else { alert('error status'); } }, error: function() { alert('请求失败'); } });
额外说明
如果你一定要保留dataType: 'text'的配置,可以在拿到response后手动调用JSON.parse(response)将字符串转为JSON对象再操作,效果和直接设置dataType: 'json'一致。
内容的提问来源于stack exchange,提问作者Secux
相关产品推荐
相关产品推荐

