Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从动态生成的标记调用ajax并从ajax获取值_Javascript_Jquery_Ajax - Fatal编程技术网

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

Javascript 从动态生成的标记调用ajax并从ajax获取值,javascript,jquery,ajax,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('c

我从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值
有什么建议吗?

您需要将
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”下动态生成子列表,那么您可能需要将启用
的行更改为:

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

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();
    });
 }

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

,请您在下一次发布之前花点时间将代码正确格式化/缩进?@NicholasKyriakides确定您在哪里调用getGroupsData?因为AJAX是异步的,所以我猜想当到达
块时,您不会得到响应
和after应该在ajax调用的
success()
函数中。@jwatts1980那么如何在if块中获取ajax的数据?@Deb您是否尝试输入
错误:function(){…}
函数以确保AJAX调用没有失败?相同的警报未定义..AJAX没有下降,因为成功警报显示audiolength的值,但如果
block@Deb您是否在AJAX成功函数中创建“Audios”链接?*不,它是
$(ul_ul_li_a)
innerHTML设置为AUDIOS@Deb是
var audioLength函数内部?也许这是一个范围问题。