服务器端进度完成时自动刷新


Auto refresh when server-side progress is complete?

好的,我正在尝试这样做一个任务表格,一旦访问者按下开始,它会在他们注册后弹出一个新选项卡,其中包含注册表(不是我的实际网站),第二个网站将发送一些东西让我知道该访问者已完成注册,

好的,但这不是事情,我想从用户开始任务的主网页实时接收注册结果,如何做到这一点而无需多次刷新特定页面来检查当前状态,我想在从主页完成注册后实时接收它

使用jquery,JavaScript或PHP,或者任何可能做到这一点

在第一页中,您可以使用 $.ajax (http://api.jquery.com/jQuery.ajax/) 将注册信息发布到数据库,稍后在第二页上检索它(也使用 $.ajax)。问题是第二页如何知道用户是否在第一页上完成了他们的业务(由"window.opener"方法标识)?为此,您可以每隔一秒执行一次 setTimeout() 以查看注册是否已完成。如果是,请从数据库中检索信息。

虽然使用 $.ajax 可能过于依赖用户的互联网连接,但我个人觉得它很慢。一种更快的方法是使用 cookie 来检查用户是否已完成注册。

还有一种相对较新的HTML5方法,称为"本地存储",它充当客户端数据库(与cookie不同,它可以支持大量数据,您可以将整个注册表存储在其上)。它也比轮询关系数据库相对快。

你可以

这样做:

  1. 收听来自第二个网站的消息
  2. 使用ajax使任务表单询问您的服务(每一秒或适合您的需求)
  3. 消息到达后,返回"true"。如果它没有返回"false"
  4. 当客户端收到"true"时,在客户端执行操作。

您仍然需要轮询主页以检查工作是否已完成,因为服务器无法启动与客户端的连接。若要防止页面刷新,请使用 AJAX 进行轮询。

使用 jQuery ajax将注册数据发送到服务器,并在事务完成后返回一些响应(将用户保存到数据库)。 在回调函数中获取它并执行其他操作(显示消息/重新加载页面的某些部分等...

因此,像这样将您的注册数据发送到服务器页面

$(function(){
   $("form").submit(e){
    e.preventDefault();
       $.post("yourRegistrationProcess.php",$("form").serialize(),function(data){
          //You have the response from server in data variable.
          // Do whatever you want next with that.          
       });
   });
});

假设您从yourRegistrationProcess.php发送一些响应(回显"已保存"等)。将用户注册数据保存到表中后。