Javascript AJAX成功函数中的延迟while循环

Javascript AJAX成功函数中的延迟while循环,javascript,jquery,Javascript,Jquery,嗨,伙计们,我有以下代码 $.ajax({ url: "http://localhost/twee/chat/getnumcom", type: 'POST', data: form_data, success: function(html) { var data = parseInt(html); page = 20 * data ; while ( counter < page ) {

嗨,伙计们,我有以下代码

$.ajax({
url: "http://localhost/twee/chat/getnumcom",
type: 'POST',
data: form_data,
success: function(html) {
            var data = parseInt(html);
                page = 20 * data ;

                while ( counter < page ) {

                       $.get("http://localhost/twee/chat/"+id+"/"+counter,function(data){
                       $('#c').append($(data).find('#c').html());
                       });      
                  counter = counter + 20 ;
               } 
          }
});

alert($('#600').length);
$.scrollTo('#600');
$.ajax({
url:“http://localhost/twee/chat/getnumcom",
键入:“POST”,
数据:表格数据,
成功:函数(html){
var data=parseInt(html);
page=20*数据;
while(计数器<第页){
$.get(”http://localhost/twee/chat/“+id+”/“+计数器,函数(数据){
$('#c').append($(数据).find('#c').html());
});      
计数器=计数器+20;
} 
}
});
警报($('#600')。长度);
$。滚动到(“#600”);
它就是这样做的。最初它会将数据附加到我的窗口,直到找到#600为止。从技术上讲,我有一个函数,它从数学上计算出600应该在哪里。这很好,div加载得很好

但是,我添加了警报,专门检查div是否已加载。值0表示否,值1表示是。在我的firebug控制台中,当函数启动时,while循环仍在执行,但警报已显示值0。因此,滚动没有完成

如果在函数执行后立即再次启动该函数,则得到1,这意味着已加载div

有没有办法延迟滚动功能直到执行while循环?我一直认为代码将按程序执行,并且警报将在加载所有数据后显示


我想定时器是一种选择,但我不想用它。我真的不确定应该将计时器设置为多少毫秒

Ajax调用是异步的,请在
while
循环之后,将
滚动到
/
警报
中的
成功
回调函数中:

$.ajax({
    url: "http://localhost/twee/chat/getnumcom",
    type: 'POST',
    data: form_data,
    success: function (html) {
        var data = parseInt(html);
        page = 20 * data;

        while (counter < page) {
            $.get("http://localhost/twee/chat/" + id + "/" + counter, function (data) {
                $('#c').append($(data).find('#c').html());
                if ($('#600').length)   //if there's a #600 element inside this $.get callback
                    $.scrollTo('#600'); //scrolls to it
            });
            counter = counter + 20;
        }
    }
});
$.ajax({
url:“http://localhost/twee/chat/getnumcom",
键入:“POST”,
数据:表格数据,
成功:函数(html){
var data=parseInt(html);
page=20*数据;
while(计数器<第页){
$.get(”http://localhost/twee/chat/“+id+”/“+计数器,函数(数据){
$('#c').append($(数据).find('#c').html());
if($('#600').length)//如果此$.get回调中有一个#600元素
$.scrollTo('#600');//滚动到它
});
计数器=计数器+20;
}
}
});

请注意,数字ID仅在HTML5中有效,如果需要考虑的话。

代码设计需要帮助。。。(不仅仅是因为int变量被称为
html
)@gdoron
html
var是xhr响应文本,如果OP仅从该调用输出整数值,他可以很好地
parseInt
它。仍然是0。我知道这些调用是异步的,从技术上讲,它应该可以很好地工作,即使它不在success callback中,也没有其他功能。就这样。我不明白为什么它不起作用。@DpkgMe我的错,我没有注意到您有多个带有
$的Ajax调用。在Ajax回调中获取
。现在再试一次,如果可以的话,我会制作一个更合适的版本。@DpkgMe我删除了警报并制作了一个最终版本。=]不,这根本不行。我试过了,它在一个无限循环中运行,我也期待着它。我认为$.scrollTo应该在成功调用之外。这并不重要