Javascript 从动态生成的标记调用ajax并从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
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代码>函数内部?也许这是一个范围问题。