微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Ajax在具有偏移量和限制而没有异步的多个块中调用PHP脚本:false

如何解决使用Ajax在具有偏移量和限制而没有异步的多个块中调用PHP脚本:false

我有一个PHP脚本,它将大量行插入MysqL数据库。为了防止超时,我分几个部分运行脚本,并使用jQuery ajax从另一个文件调用它:

    var done = false,offset = 0,limit = 100; 
    
    
    while (!done) {
    var url = "myscript.PHP?offset=" + offset + "&limit=" + limit;

        jQuery.ajax({
   
            url: url,async: false,type: "GET",success: function(response) {
            console.log("success");
                    if (response.processed !== limit) {
                        done = true;
                    }
                    offset += response.processed;
                    console.log("Updating weekly rankings,users processed: "+offset);
                    
            },fail: function(jqXHR,textStatus) {
                    console.log("fail");
                    done = true;

            }
        });
    }

还有我所谓的PHP脚本:

$mydb->setQuery("SELECT player FROM players LIMIT ".$limit." OFFSET ".$offset);
$rows = $mydb->loadobjectList();
    
foreach ($rows as $row) {

//loop through players get some data and insert rows to database

}

$response = array(
    'processed' => count($rows),'message' => 'All OK!'
);

header('Content-Type: application/json');
echo json_encode($response);
die;

当async设置为false时,它工作正常,但是当设置为true时,脚本将永远挂起并循环(只是不断地向数据库中无限插入新行)。我也无法通过console.log得到任何提示,因为它没有显示在浏览器控制台中。

由于async:false已弃用,并且在运行时也挂起了浏览器,我真的很感谢另一种方法

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。