好的,我正在尝试这样做一个任务表格,一旦访问者按下开始,它会在他们注册后弹出一个新选项卡,其中包含注册表(不是我的实际网站),第二个网站将发送一些东西让我知道该访问者已完成注册,
好的,但这不是事情,我想从用户开始任务的主网页实时接收注册结果,如何做到这一点而无需多次刷新特定页面来检查当前状态,我想在从主页完成注册后实时接收它
使用jquery,JavaScript或PHP,或者任何可能做到这一点
在第一页中,您可以使用 $.ajax (http://api.jquery.com/jQuery.ajax/) 将注册信息发布到数据库,稍后在第二页上检索它(也使用 $.ajax)。问题是第二页如何知道用户是否在第一页上完成了他们的业务(由"window.opener"方法标识)?为此,您可以每隔一秒执行一次 setTimeout() 以查看注册是否已完成。如果是,请从数据库中检索信息。
虽然使用 $.ajax 可能过于依赖用户的互联网连接,但我个人觉得它很慢。一种更快的方法是使用 cookie 来检查用户是否已完成注册。
还有一种相对较新的HTML5方法,称为"本地存储",它充当客户端数据库(与cookie不同,它可以支持大量数据,您可以将整个注册表存储在其上)。它也比轮询关系数据库相对快。
这样做:
- 收听来自第二个网站的消息
- 使用ajax使任务表单询问您的服务(每一秒或适合您的需求)
- 消息到达后,返回"true"。如果它没有返回"false"
- 当客户端收到"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
发送一些响应(回显"已保存"等)。将用户注册数据保存到表中后。