正确调用JSON函数

时间:2014-06-17 03:26:09

标签: javascript json

如果我有这个JSON数据,怎样才能正确调用loadlist函数?

我这样打电话但它不起作用:

loadlist($('select#selName').get(0), 'pull.php','data.name')

这是我的JSON数据:

{
  data: [
    {
      id: "e0b0d8sc5ffd82e",
      name: "John",
    }
  ]
}

功能

function loadlist(selobj,url,nameattr) {
  $(selobj).empty();
  $.getJSON(url,{},function(data)
  {
    $(selobj).append(
        $('<option>Select</option>')
                    .val('null')
    );

    $.each(data, function(i,obj)
    {
        $(selobj).append(
             $('<option></option>')
                    .val(obj[nameattr])
                    .html(obj[nameattr]));
    });
  });
}

1 个答案:

答案 0 :(得分:4)

您认为obj["data.name"]等于obj.data.name是错误的。 (等效项需要两次属性访问:obj["data"]["name"]

如果您认为可能需要进行嵌套属性检索,那么传递一个函数来检索属性可能会更好。 (如果您需要使用动态计算的值,这也会有效。)

function loadlist(selobj,url,getter) {
  $(selobj).empty();
  $.getJSON(url,{},function(data)
  {
    $(selobj).append(
        $('<option>Select</option>')
                    .val('null')
    );

    $.each(data, function(i,obj)
    {
        var value = getter(obj);
        $(selobj).append(
             $('<option></option>')
                    .val(value)
                    .html(value));
    });
  });
}

// Call as follows:
loadlist($('select#selName').get(0), 'pull.php', function (obj) {
    return obj.data.name;
});