如何在jQuery AJAX成功回调中动态访问JSON返回属性?
解决方案
你遇到的问题是因为点语法只能访问固定命名的对象属性,而你构造的trait_path是动态变量,这时候必须改用方括号[]语法来实现动态属性访问。
修改方式很简单,把data.trait_return.trait_path替换成data.trait_return[trait_path]即可——方括号允许你传入字符串变量作为属性名,正好匹配你通过trait + "_path"构造的字段名。
修改后的完整代码:
$.ajax({ url : 'start.php', type : 'POST', data : form_data, dataType : "JSON", success : function (data) { var traits = ["background","face","body","back","ears","head","bandana","legs"]; $.each(traits, function(index, trait) { var trait_path = trait + "_path"; // 用方括号语法访问动态属性 $('#'+trait+'_select').val(data.trait_return[trait_path]).prop("selected", "selected"); }) } })
简单补充:
- 点语法(如
obj.property):适合属性名明确固定的场景 - 方括号语法(如
obj[variable]):支持用变量或动态拼接的字符串作为属性名,是处理这类动态访问需求的标准方式
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

