Javascript 无法使用jquery返回li id
我通过ajax导入数据,以填充类似facebook的墙式应用程序(或twitter墙) 但是当我尝试访问第一个li时,我变得不确定了——如果有人能发现我明显的错误,我将不胜感激Javascript 无法使用jquery返回li id,javascript,jquery,Javascript,Jquery,我通过ajax导入数据,以填充类似facebook的墙式应用程序(或twitter墙) 但是当我尝试访问第一个li时,我变得不确定了——如果有人能发现我明显的错误,我将不胜感激 var get_venues = function(){ $.ajax({ type: "GET", url: '<?=base_url()?>wall/start_to_grab/', dataType: "JSON"
var get_venues = function(){
$.ajax({
type: "GET",
url: '<?=base_url()?>wall/start_to_grab/',
dataType: "JSON",
success: function(data) {
var sel = $("#wall");
sel.empty();
for (var i=0; i < data.length; i++) {
sel.append('<li id="'+data[i].post_id +'"> ' + data[i].title + '</li>');
}
}
});
//start_poll($('ul#wall li:first').attr('id'));
alert($("ul#wall li:first").attr("id")); // returns undefined
};
var get_=function(){
$.ajax({
键入:“获取”,
url:'wall/start_to_grab/',
数据类型:“JSON”,
成功:功能(数据){
var sel=$(“#墙”);
sel.empty();
对于(变量i=0;i'+data[i].title+'');
}
}
});
//开始投票($('ul#wall li:first').attr('id');
alert($($($)wall li:first”).attr(“id”);//返回未定义的
};
即使在我可以看到页面上的元素时,代码仍返回未定义。这就是AJAX的工作方式(顾名思义,是异步的)。
警报在AJAX请求返回响应之前执行,因此没有添加li
元素
将警报
移动到AJAX成功事件处理程序中。或者,您可以使AJAX请求同步,但这几乎总是不是您想要的。这就是AJAX的工作方式(顾名思义,是异步的)。警报在AJAX请求返回响应之前执行,因此没有添加li
元素
将警报
移动到AJAX成功事件处理程序中。或者,您可以使AJAX请求同步,但这通常不是您想要的。您的错误是试图在异步请求完成之前访问异步请求的结果。简单地说,当您试图提醒您的ID时,异步请求尚未完成,因此没有附加li。解决方案是在异步请求中调用一个函数来提醒您的ID:
var get_venues = function() {
$.ajax({
type: "GET",
url: '<?=base_url()?>wall/start_to_grab/',
dataType: "JSON",
success: function(data) {
var sel = $("#wall");
sel.empty();
for (var i = 0; i < data.length; i++) {
sel.append('<li id="' + data[i].post_id + '"> ' + data[i].title + '</li>');
// Request complete, call handler to alert ID
HandleResponse()
}
}
});
};
function HandleResponse() {
alert($("ul#wall li:first").attr("id")); // returns undefined
}
var get_=function(){
$.ajax({
键入:“获取”,
url:'wall/start_to_grab/',
数据类型:“JSON”,
成功:功能(数据){
var sel=$(“#墙”);
sel.empty();
对于(变量i=0;i'+data[i].title+'');
//请求完成,调用处理程序到警报ID
HandlerResponse()
}
}
});
};
函数HandleResponse(){
alert($($($)wall li:first”).attr(“id”);//返回未定义的
}
您的错误是试图在异步请求完成之前访问异步请求的结果。简单地说,当您试图提醒您的ID时,异步请求尚未完成,因此没有附加li。解决方案是在异步请求中调用一个函数来提醒您的ID:
var get_venues = function() {
$.ajax({
type: "GET",
url: '<?=base_url()?>wall/start_to_grab/',
dataType: "JSON",
success: function(data) {
var sel = $("#wall");
sel.empty();
for (var i = 0; i < data.length; i++) {
sel.append('<li id="' + data[i].post_id + '"> ' + data[i].title + '</li>');
// Request complete, call handler to alert ID
HandleResponse()
}
}
});
};
function HandleResponse() {
alert($("ul#wall li:first").attr("id")); // returns undefined
}
var get_=function(){
$.ajax({
键入:“获取”,
url:'wall/start_to_grab/',
数据类型:“JSON”,
成功:功能(数据){
var sel=$(“#墙”);
sel.empty();
对于(变量i=0;i'+data[i].title+'');
//请求完成,调用处理程序到警报ID
HandlerResponse()
}
}
});
};
函数HandleResponse(){
alert($($($)wall li:first”).attr(“id”);//返回未定义的
}
另外,使用$('',{id:data[i].post_id,html:data[i].title})
使用jQuery创建li元素(:我认为它会在ajax调用后按过程执行的错误,谢谢没有问题,很高兴我能提供帮助:)这是一个非常常见的错误。这里至少每天都有一个像你这样的问题。另外,使用$('',{id:data[i].post_id,html:data[i].title})
使用jQuery创建一个li元素(:我认为它会在ajax调用后执行过程,这是一个非常常见的错误,谢谢你,很高兴我能提供帮助:)。这里至少每天都有一个像你这样的问题。使用同步AJAX请求。。。。设置async:false,
使用同步AJAX请求。。。。设置async:false,