使用jQuery.post()提交内容并显示正在发生的事情


Using jQuery.post() to submit content and display what's going on

这更多的是出于好奇,但我能想到几个地方(主要是在管理部分),这可能是有用的。我知道标题让人困惑所以这就是我的意思:

假设您有一个发送到example_cb.php的表单。php是一个非常大的回调页面,它生成图像的多个缩略图,将它们放在各自的目录中,将它们添加到数据库中,等等。你已经有了通过jquery发布表单的函数,像这样

$.post('example_cb.php', $(this).serialize(), function(data) {
   // Success
}, 'json');

在发布之前,它更新了一个div来表示"正在处理"某些东西。然后在它成功完成后,div淡出。但是,您希望div显示服务器端正在发生的事情。即转换200X200拇指>转换350x350拇指>将记录添加到数据库>等

你怎么能做到这一点?

我知道这是一个复杂的问题,但我相信这里有足够聪明的人能解决它。如果你需要更多的信息,请评论:)

你可以这样做-

  • 将每个"事件"更新写入数据库表
  • 写一个页面,从表
  • 中检索最近n个事件
  • 使用类似'load'的东西来调用页面更新一个屏幕上的div随着进度的更新。
  • 使用'setTimeout '来保持更新

这可以通过使用push方法轻松完成,但我对ajax push或comet技术不太熟悉,因此我将提供一个pull解决方案。

基本上,您需要创建初始ajax请求来启动处理。然后,您需要在紧密循环中运行另一个请求,该请求检查php页面的当前状态。例如,在执行处理的php页面上,您可以在每个步骤更新一个_SESSION键,该键存储当前处理信息(如"转换200X200拇指")。另一个php页面将纯粹用于打印这些信息,您可以通过JS在循环中运行来检索它。

类推送服务可用于双向通信。

我把它写下来供参考,尽管对于这样一个简单的场景来说,这样做有些过头了。