从动态生成的标记调用ajax并从ajax获取值

时间:2015-04-26 04:25:08

标签: javascript jquery ajax

我从ajax中获取数据,如

更新

var a = document.createElement('a');
a.setAttribute('id', tr_job_room);
a.setAttribute('onclick', 'getGroupsData(this.id)');                 
var audioLength;
var ul_ul_li_a = document.createElement('a');
ul_ul_li_a.setAttribute('class', 'dropdown-toggle');
ul_ul_li_a.setAttribute('href', '#');
ul_ul_li_a.innerHTML = "Audios";
ul_ul_li_a.setAttribute('id', tr_job_room);
if (audioLength > 0) {
    alert("audiolength"+audioLength);
    $(ul_ul_li_a).on('click', function () {
       alert(audioLength+"sdasds");
       varid = this.id;
       audiosPlay(varid);
       scriptpanel();
       getTxtData();
    });
 }

和ajax是:

// DISPLAY GROUPS DATA
function getGroupsData(arg) {
    $.ajax(
    {
        type: "POST",
        url: '@Url.Action("getGroupsData")',
        dataType: "json",
        mtype: "post",
        data: { arg: arg },
        async: true,
        success: function (data) {
            audioLengh = data.groups[0].audio.length;
            audioDisplay(arg, data.groups[0].audio.length, data.groups[0].audio);
        }
    });
}

这是获取数据的正确方法吗? 我没有在if块中获取audioLength值 有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您需要将if放入点击事件中。无论如何都执行该函数,但将if语句放入函数中以确定是否应该运行任何其他函数:

$(ul_ul_li_a).on('click', function () {
    alert("audiolength"+audioLength);

    if (audioLength > 0) {
        alert(audioLength+"sdasds");
        varid = this.id;
        audiosPlay(varid);
        scriptpanel();
        getTxtData();
    }
});

我无法从您的代码中判断出来,但如果您在“Air”下动态生成子列表,则可能需要将on更改为:

$(document).on('click', 'a.dropdown-toggle', function () {

<强>更新

我注意到在success函数中,您的变量拼写为audioLengh而不是audioLength