当我单击一个按钮以通过ajax加载内容时,我想显示一个进度条。
创建$.ajax
调用后,通信立即转到服务器上的php文件,该文件从服务器上的另一个文件中抓取数据。导入数据需要花费7到8秒的时间。
我想在发出ajax请求时显示进度加载器。我在网上寻找,找不到简单的解决方案。我所能找到的只是复杂的上传文件脚本,而要对其进行自定义以执行此简单操作将花费大量时间。如果有人可以帮助,那就太好了。否则,我将不得不处理微调器。
最佳答案
因为所有其他答案都只是显示占位符图像或文本或只是伪造它,所以这是您可以执行的操作(只是描述,没有代码-但唯一难的部分是确定实际完成了多少工作):
编辑通过$.ajax
调用的php脚本以计算已完成工作的百分比-如何执行此操作完全取决于脚本的工作情况,因此非常容易(例如,当您迭代时一堆要处理的事物,每个事物花费大约相同的时间)或非常困难(例如,当大部分时间花费在对库或内置函数的单个非重复调用中)时。将此百分比保存在 session 变量中:
$_SESSION["PERCENTAGE_DONE"] = $my_calculated_percentage;
显然,您希望尽可能且合理地更新此变量。
现在,创建另一个仅输出该值的php脚本(纯文本对于本示例而言就足够了,但是您也可以使用json或xml或您喜欢的其他格式):
//initialize session, set headers etc. before this
echo $_SESSION["PERCENTAGE_DONE"]
对于javascript部分,创建另一个函数,该函数通过ajax调用新的php脚本,读取返回的值并绘制/更新进度条(对于绘制部分,您可以将JustinJohns的答案作为起点)。现在,在执行了主要的
$.ajax
调用之后,将此功能与setTimeout
结合使用可重复查询服务器,直到任务完成。关于php - 在$ .ajax调用上创建进度条,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12638010/