JSON通过变量名检索对象
JSON retrieving object via variable name
我创建了一个.post表单,它返回一个JSON字符串,我需要根据选择框的名称获取数据。请参考下面的例子。
JavaScript
$(document).ready(function(){
$.post('/seller/product_upload/helpers/jpost_product_form_autofill.php',{product_id:$("input[name='product_id']").val()},function(data){
alert(data);
if(data!='false'){
var obj = jQuery.parseJSON(data);
$("#attributes_table select").each(function(){
var select=$(this);
select.find("option").each(function(){
var option=$(this);
var select_name=select.attr('name');
alert(select_name);
alert(obj.select_name);
if(option.val()==obj.select_name){
option.attr('selected','selected');
}
});
});
}
});
});
这里关注的主要部分实际上是if
的底部部分。obj.select_name
不是此处的主要对象名称。它实际上是selectbox
的名称,我将其作为JSON中解析的数组键值的巧合。
但现在系统一直在为obj.select_name
发出未定义的警报。在将select_name解析为JSON对象之前,有没有什么方法可以先将其解析为字符串?
我相信你想这么做:
var name = 'select_name';
alert(obj[name]);
如前所述,您需要使用方括号来使用未知字符串作为索引。也就是说,您可以使用jQuery的val
函数来简化代码。您不需要手动设置选项值,val
可以像读取它们一样设置它们。比如:
var obj = jQuery.parseJSON(data);
$("#attributes_table select").each(function(){
var select = $(this);
select.val(obj[select.attr('name')]);
});
您也可以这样做,因为val
将在自身内部自动执行forEach
。
var obj = jQuery.parseJSON(data);
$("#attributes_table select").val(function(){
return obj[$(this).attr('name')];
});
相关文章:
- 如何从类关系中检索对象列表
- 检索对象项的路径
- 正在根据ID从数组中检索对象
- 以文本形式检索对象元素中的SVG Dom
- AJAX来检索对象并将其存储在变量中
- 如何在帮助程序或事件中检索对象的内部_id
- 如何在 ydn-db 中检索对象的排序列表
- Javascript - 检索对象属性路径
- 从具有特定参数的数组中检索对象
- 如何从jsonString中检索对象
- 检索对象自己的标记
- 从URL检索对象/资源
- 如何从Google Apps脚本项目属性中存储和检索对象
- 如何从GTM数据层中检索对象
- JQueryAJAX检索对象数组
- 正在检索对象中嵌套的值
- 使用PHP从JSON中检索对象
- 如何从具有给定(键、值)对的长列表中检索对象
- 使用承诺从 mongo db 检索对象时出错
- 在树状的angularjs模型中检索对象