gpt4 book ai didi

javascript - 如何使用 javascript 和 ajax 制作轮询脚本

转载 作者:行者123 更新时间:2023-12-03 11:29:07 24 4
gpt4 key购买 nike

我有一个运行长转换 php 脚本和进度轮询脚本的脚本。在查看了有关此主题的几篇文章后,我发现应该可以使用异步 ajax 调用与 javascript 的超时相结合来创建一个结构,该结构将定期轮询进度并使用百分位数更新我的页面。请参阅下面的代码

function startExcelConversion(excelname){

var poll = function(){
setTimeout(function(){
$.ajax({
url: "../include/ajax/ajax.php?action=poll_progress",
success: function(data){
//Update the progress bar
// show progress
console.log('progresser: '+data);
$("#progress").val(data);
//Setup the next poll recursively
poll();
},
complete: function( jqXHR, textStatus ){
//Update the progress bar
// show progress
console.log(textStatus);
},
dataType: "json"
});
}, 3000);
};

poll();

//show loading image
console.log('starting conversion');
$('#progress').val("Excel openen...");
$('#main').prepend('<img id="loading" src="../include/image/load.gif">');
$("#loading").show();

$.ajax({
url: '../import/import_main.php?clean&action=importexcel&excelname='+excelname,
success: function(data) {
console.log(data);
$("#main").html(data)
$('#loading').hide();
}
});



return false;

}

第一个 block 启动运行一段时间的脚本(Excel 读取和转换)。该脚本每 10 行更新一个数据库表以设置进度。第二个 block (从开始轮询开始 0 应该启动一个 php 脚本来读取此进度数据库字段并回显它,以便我可以使用百分位数更新我的输入字段。但是,在第一个 php 脚本(import_main)运行时不会调用轮询脚本.php)。我尝试了 $.post 和 $.get 调用(默认情况下应该像 $.ajax 一样异步)。还尝试了 setInterval 但不起作用,并且由于计时问题不推荐。我在这里遗漏了一些明显的东西吗还是我缺少 php 中的设置?

提前致谢

最佳答案

我会尝试在脚本顶部定义 poll,例如:

var poll = function(){
setTimeout(function(){
$.ajax({
url: "../include/ajax/ajax.php?action=poll_progress",
success: function(data){
//Update the progress bar
// show progress
console.log('progresser: '+data);
$("#progress").val(data);
//Setup the next poll recursively
poll();
},
dataType: "json"
});
}, 3000);
});

然后在 ajax 调用之后调用它,例如 poll()。看看是否有帮助。现在,在 ajax 调用之后您有一个匿名函数,但它尝试使用 poll() 调用自身;在成功回调中,这不会被定义。

关于javascript - 如何使用 javascript 和 ajax 制作轮询脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26802288/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com