PHP-显示加载的百分比
我一直在搜索和处理一些XHRAjax的东西,但我仍然没有找到任何解决方案 我拥有的是一个在jQuery中用AJAX加载的内容。 我想做的是显示一个百分比加载器。我已经在发送前设置了一个加载图标,但是由于我有很多数据(文本),我的客户认为它卡住了 我已经试过了,但它只显示所有内容都已加载时的百分比(因此它显示PHP-显示加载的百分比,php,ajax,progress,Php,Ajax,Progress,我一直在搜索和处理一些XHRAjax的东西,但我仍然没有找到任何解决方案 我拥有的是一个在jQuery中用AJAX加载的内容。 我想做的是显示一个百分比加载器。我已经在发送前设置了一个加载图标,但是由于我有很多数据(文本),我的客户认为它卡住了 我已经试过了,但它只显示所有内容都已加载时的百分比(因此它显示100%),但我想这是因为客户机-服务器之间的通信不是持久的 有没有一种方法可以使用PHP和jQuery实现这一点?如果没有,我怎么做 这是我的密码: $.ajax({ url: aj
100%
),但我想这是因为客户机-服务器之间的通信不是持久的
有没有一种方法可以使用PHP和jQuery实现这一点?如果没有,我怎么做
这是我的密码:
$.ajax({
url: ajax_var.url,
type: 'POST',
data: dataString,
beforeSend: function() {
$("#loader").html("<i class='loading icon'></i> Loading...");
},
success: function(data) {
$("#loaded_data").html(data);
},
error: function(e) {
console.log(e);
}
});
$.ajax({
url:ajax_var.url,
键入:“POST”,
数据:dataString,
beforeSend:function(){
$(“#加载程序”).html(“加载…”);
},
成功:功能(数据){
$(“#加载的#数据”).html(数据);
},
错误:函数(e){
控制台日志(e);
}
});
谢谢简短的回答是-不。长的回答是-是的,但前提是你做了大量的工作,并且你了解幕后的情况 AJAX在HTTP上工作,我们知道HTTP是无状态协议。这意味着,一旦你提出要求,你就会得到回报。不管它的大小。您无法通过计算数据量的方式获得响应(服务器必须告诉您
内容长度是多少)
换句话说,无论响应是1个字符还是1TB的数据,处理方式都是一样的。您需要它,直到它回来-您无法与数据交互。这就是为什么不能为单个请求显示任何类型的进度条,这就是为什么它只有在100%加载后才会显示。您可以显示加载图标,并在所有内容到达后将其删除,仅此而已
这个问题的解决方案在于执行多个请求。工作流的一个示例如下:
- 向服务器询问内容的长度
- 将内容分块。如果要传输的文本长度为10KB,请将内容分成10个块
- 向服务器请求每个块
- 每块内容占10%
- 当块到达时,将加载程序增加相同的百分比
- 数据到达后,将其合并并显示给用户
(注意——10KB的例子只是解释原理的一个例子,将10KB的数据分为10个1kb的请求绝非任何形式的建议)
当然,这种方法的缺点是,您通过发出多个请求给服务器带来压力,并且依赖客户端将数据“组装”成有意义的内容
还有其他方法,但如果您需要AJAX和普通的旧jQuery,您没有很多选择。您可以检查;我已经试过了。它只显示所有内容都已加载时的百分比。是的,这也是我想要做的。我想我会忘记这个想法,在发送前将加载图标留在上。谢谢你的详细回答。根据我个人的经验,实现某种类型的加载程序和超时已经足够了,这样你就可以在出现问题时通知用户。如果您使用async jquery$.ajax,人们可以继续使用您的应用程序,而不需要整个过程阻塞和显示加载程序图标。当然,这需要更多的工作,但仍然有办法:)