2

我创建了一个返回 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');
                    }
                });
            });
        }
    });
});     

这里关注的主要部分实际上是底部ifobj.select_name不是这里的主要对象名称。它实际上是selectbox我在 JSON 中解析的数组键值巧合的名称。

但现在系统不断提醒 undefined for obj.select_name。有什么方法可以先将 select_name 解析为字符串,然后再将其解析为 JSON 对象?

4

2 回答 2

3

我相信你想这样做:

var name = 'select_name';
alert(obj[name]);
于 2013-02-12T14:25:38.720 回答
0

如前所述,您需要使用方括号来使用未知字符串作为索引。也就是说,您可以使用 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')];
});
于 2013-02-12T14:33:25.933 回答