Ajax Callback将选择下拉html追加到表中?

时间:2014-11-16 13:38:02

标签: javascript jquery html ajax

我试图使用下面的代码使用jQuery追加一些html。整个事情我只是尝试使用ajax响应数据选择一个选项并构建一个选择下拉列表。但sOut变量范围无法在回调函数循环内持久追加html。是否有任何工作可以实现我的目标?

getVendor(aData[2], function (response) {
    var obj = jQuery.parseJSON(response);
    var sOut = '<table cellpadding="5" cellspacing="0" border="0" style="padding-left:50px;">';
    var industries_select = '<tr><td>Industry:</td><td><select class="form-control m-bot15">';

    getIndustries(function (response) {
        var industries = jQuery.parseJSON(response);
        for (var l = 0; l < industries.length; l++) {
            if (industries[l].id == obj.industry) {
                industries_select += '<option value="' + industries[l].id + '" selected="selected">' + industries[l].name + '</option>'
            } else {
                industries_select += '<option value="' + industries[l].id + '">' + industries[l].name + '</option>'
            }
        }
    });
    industries_select += '</select></td></tr>';
    sOut += industries_select;
    sOut += '</table>';
});

2 个答案:

答案 0 :(得分:0)

这是异步请求的预期行为。你应该做这样的事情

getVendor(aData[2], function (response) {
    var obj = jQuery.parseJSON(response);
    var sOut = '<table cellpadding="5" cellspacing="0" border="0" style="padding-left:50px;">';
    var industries_select = '<tr><td>Industry:</td><td><select class="form-control m-bot15">';

    getIndustries(function (response) {
        var industries = jQuery.parseJSON(response);
        for (var l = 0; l < industries.length; l++) {
            if (industries[l].id == obj.industry) {
                industries_select += '<option value="' + industries[l].id + '" selected="selected">' + industries[l].name + '</option>'
            } else {
                industries_select += '<option value="' + industries[l].id + '">' + industries[l].name + '</option>'
            }
        }

        industries_select += '</select></td></tr>';
        sOut += industries_select;
        sOut += '</table>';
    });
});

因为,getIndustries的回调将在稍后的某个时间点调用,当您在函数外部访问industries_select时,它将被定义。

答案 1 :(得分:-1)

例如,如果您正在动态构建HTML,那么您可以尝试将sOut变量附加到功能范围内的Div标记中,例如:

HTML:

<div id="dynamic"></div>

JQuery的:

$("#dynamic").append(sOut);