我创建了一个返回JSON字符串的.post表单,我需要根据选择框的名称获取数据。请参考以下示例。
的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对象之前将select_name解析为字符串?
答案 0 :(得分:2)
我相信你想这样做:
var name = 'select_name';
alert(obj[name]);
答案 1 :(得分:0)
如上所述,您需要使用方括号将未知字符串用作索引。也就是说,您可以使用jQuery的val
函数来简化代码。您无需手动设置选项值,val
可以将它们设置为可以读取它们。 Lke this:
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')];
});