jQuery Ajax迭代返回数据时如何正确读取对象属性完成赋值
问题原因
循环中的属性取值写法存在本质错误:
data[0]是JavaScript对象,直接与字符串执行+拼接操作时,JS会自动将对象转换为字符串值[object Object],最终得到[object Object].TenNhanQuyCach这类无意义的拼接结果,无法读取到实际属性值- 点号(
.)属性访问语法仅支持传入固定的静态属性名,无法通过拼接字符串的方式实现动态属性读取 - 原代码赋值行末尾多写了一个单引号,本身存在语法报错问题
修复方案
JavaScript中需要根据变量动态读取对象属性时,必须使用方括号访问语法,格式为对象[存储属性名的变量]。修复后的可运行代码如下:
$.ajax({ url: 'someurl to retrive data', type: 'POST', data: {id: id}, success: function(data, status) { // 移除数组末尾多余逗号,兼容低版本JS环境 const inputNameArr = ['nameProBangHHModal', 'valueBangHHModal']; const dbFieldArr = ['TenNhanQuyCach', 'DonViTinh']; for (let i = 0; i < inputNameArr.length; i++) { // 通过方括号语法动态获取对应字段值 const fieldVal = data[0][dbFieldArr[i]]; $(`#someModal input[name="${inputNameArr[i]}"]`).val(fieldVal); } } })
内容的提问来源于stack exchange,提问作者anh phan
相关产品推荐
相关产品推荐

