jQuery Post循环,崩溃了浏览器

时间:2011-03-22 07:47:25

标签: javascript jquery html

我正在尝试创建一个循环,每次都通过$.post检索其他页面的内容,并在完成后执行下一页,直到该页面上的元素显示0结果。

function scrapeIt() {
    $(".currentPage").html("Current Page: " + page);
    $.post("scrapePosts.aspx", { page: page, search: keyword }, function (data) {
        $(".status").html(data);
        if ($("#count").html() == "10") {
            scrapeIt();
        } else {
            alert("Stopping...");
        }
    });
    page++;
}

$(document).ready(function () {
    var page = 1;
    var keyword;
    var stillGettingResults = true;

    $("#go").click(function () { //Start Button
        keyword = $("#keyword").val(); // Textbox
        $(".status").html("Loading...");
        scrapeIt();
    });
});

这个想法是scrapeIt()函数再次调用自己,但只有当它完成了post请求时才会这样做。它似乎只是冻结了。

3 个答案:

答案 0 :(得分:3)

var page = 1var keyword都应在全局范围内声明,否则undefined中的function scrapeIt()

您的网页可能看起来很冻结,因为在帖子请求中没有发送pagekeyword,服务器可能无法理解请求。

答案 1 :(得分:0)

请参阅setTimeout() $.post我不是异步并且经常调用它会冻结浏览器线程

答案 2 :(得分:0)

由于递归页面始终为零。 您需要在post回调中增加页面变量,而不是在scrapeIt结束时。

$.post("scrapePosts.aspx", { page: page, search: keyword }, function (data) {
        page++;
        $(".status").html(data);
        if ($("#count").html() == "10") {
            scrapeIt();
        } else {
            alert("Stopping...");
        }