从函数中的json数组中获取结果

时间:2013-07-11 06:08:05

标签: jquery arrays json each

我正在尝试构建一个可重用的函数来拉取json结果并写回页面

到目前为止,我得到了json,当它返回时运行一个函数,它传递索引和结果的一些数据。一切正常

问题是当我围绕函数中的结果进行迭代时(见下文)

有时数据结构可能是data.userGroup.form,有时也可能是data.userGroup.user等等

我试图做的是将我想要使用的名称作为最后一个参数传递给函数,即“user”和内部.each调用element.name(其中名称可以变化),但这不起作用。有人可以帮忙吗?

这是代码

$.when(promise).then(function(result) {

    $(result.data.userGroup).each(function(index, element) {
    var html = getHTML( ["Name", "Delete"], index, element, "user");

        $("#accordion2").append(html);
    });

})

function getHTML(array, index, element, name) {

var html = " <div class='accordion-group'>";
html = html + "<div class='accordion-heading'>";
html = html + "<span class='accordian-image'></span>" + element.name + "</a>";
var inner ="";

    $(element.name).each(function(i, result) {
    inner = inner + "<tr><td>" + result.name + "</td>" ;
    });

html = html + inner;
return html;
}

1 个答案:

答案 0 :(得分:1)

您需要使用bracket notation代替dot notation作为member operator

element[name]

实施例

$.when(promise).then(function(result) {

    $(result.data.userGroup).each(function(index, element) {
        var html = getHTML( ["Name", "Delete"], index, element, "user");

        $("#accordion2").append(html);
    });

})

function getHTML(array, index, element, name) {

    var html = " <div class='accordion-group'>";
    html = html + "<div class='accordion-heading'>";
    html = html + "<span class='accordian-image'></span>" + element[name] + "</a>";
    var inner ="";

    $(element.name).each(function(i, result) {
        inner = inner + "<tr><td>" + result[name] + "</td>" ;
    });

    html = html + inner;
    return html;
}