Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.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 无法使用jquery返回li id_Javascript_Jquery - Fatal编程技术网

Javascript 无法使用jquery返回li id

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"

我通过ajax导入数据,以填充类似facebook的墙式应用程序(或twitter墙)

但是当我尝试访问第一个li时,我变得不确定了——如果有人能发现我明显的错误,我将不胜感激

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,