Javascript循环挂起

时间:2014-03-11 20:14:10

标签: javascript jquery loops

好的,我在这里没有选择。

我正在尝试执行此代码,但它始终挂起。我已经尝试用“while”循环修改“for”循环,根本没有结果,也尝试使它成为一个函数并像往常一样通过setTimeout()执行它,根本没有运气。我不知道还能做什么。

<script>    
$(document).ready(function() {
    for( var i=1; i<50; i++ ) {
        var theurl = 'include_test.php?appid=' + i;
        $('#index').html(i);
        $.get(theurl, function(response) {
            var checking = response.split(" - ");
            if(checking.length > 1) {
                $('#main').append(response);
                $('#index').html(checking[0]);
            } else {
                $('#index').html(response);
            }
        });
    }
}); 
</script>

我在这里缺少什么?

ADDED

通过“挂起”我的意思是制表符停止响应并崩溃。此外,如果我删除了ajax请求,代码仍然无效。

$(document).ready(function() {
    var i = 0;
    for(i=1;i<50;i++){
        $('#index').text(i);
    }
});

ADDED

这是包含评论的HTML。不知道为什么,但当我删除它们时,代码开始工作:/

<body>
<!-- result index -->
<div id="index"></div>
<!-- result content -->
<div id="main"></div>
</body>
</html> 

设法让它工作删除评论(是的,评论)我发现另一个......“bug”?我不知道我和JS有什么不对。

要查看测试网页HERE的“错误”信息 循环是否有任何原因可以解决?有没有办法让它按顺序工作?

2 个答案:

答案 0 :(得分:1)

在代码中添加一个失败函数,并告诉我们发生了什么。 使用jquery失败函数的示例 -

http://jsfiddle.net/hbh3a/

失败功能的文档 https://api.jquery.com/jQuery.get/

你的代码中的

会是这样的:

<script>    
$(document).ready(function() {
for( var i=1; i<50; i++ ) {
    var theurl = 'include_test.php?appid=' + i;
    $('#index').html(i);
    $.get(theurl, function(response) {
        var checking = response.split(" - ");
        if(checking.length > 1) {
            $('#main').append(response);
            $('#index').html(checking[0]);
        } else {
            $('#index').html(response);
        }
    })
    .fail(function(){//put failure code here console.log('failure');
   });
}
}); 
</script>

答案 1 :(得分:1)

一般来说,一次进行50次AJAX调用并不是一个好主意。他们回归不顺序的原因是因为你没有按顺序打电话给他们,你一次性调用它们,所以他们按照先完成的顺序返回。你可以一个接一个地链接它们,但你最好一次做10个卷发,然后在完成10个卷发后再发回所有这10个,并且这样做5次。