如题,我要做一个页面,上边有一个提交按钮,点击后把数据提交给别的网站(此时页面不关闭,提出一个新窗口,新窗口是提交的网站),一段时间以后(此时提交的页面仍然在等待),那个网站返回给我们服务器消息,并修数据库的信息,我想当服务器接到消息,修改了数据后,通知客户端页面,客户端页面,再根据相应的修改,改变页面的值,请教各位,我该如何实现??谢谢
从楼主的回复中我看出来,基本上你不想通过系统自动轮询的形式获取服务端反馈,或许是出于系统压力的担心。我想通过一个常见案例帮助你找到一个较理想的解决方案。
不知道你用过淘宝没有,在进行支付宝充值时,他与网上银行系统的交互略与你的应用相似。很显然,阿里没用自动轮询(估计它的担心与你一样)。
一般情形,当你的应用提交数据给别的应用时,用户会有在该别的应用上的操作,而用户也可以在该别的应用上通过双眼获取应用状态,而一切操作完成后,完全可以借助用户的手进行对我应用服务器的“最新状态获取”。只要合作方的应用有明显通知用户“操作已完成”的情形,就可以模仿淘宝留一个静态页(层)给用户,让用户主动刷新。
自动与手动,在不同的场景,却都有长短,呵呵
对方返回消息你接收这个就不用说了吧?
在页面中添加一个隐藏的iframe不断刷新或者使用ajax对某个页面进行轮询,目的就是不停的请求一个页面,这个页面可以只返回一个简单的标识,用来返回数据是否已经改变(或者还可以加上新数据是什么,推荐使用JSON)
这样就可以“即时”获取到服务器端的数据变动了,时间可以比较频繁,比如5秒甚至更频繁,没有办法完全实时,因为服务器端无法主动发消息给客户端
用ICallbackEventHandler.
这是很典型的AJAX需求,你在前台用window.setInterval("前台脚本();",3000);
用回调来获取后台处理结果[在后台获取数据库,监视数据库变化]
如果不清楚,可以查看网上找找ICallbackEventHandler,还不行就EMAIL我:zaluao@gmail.com
你可以用Ajax的定时器,定期的去扫描页面,如果发生变化了,就刷新一下页面。
如果是服务器返回给我值前后分别记不同的状态,根据状态的需要去刷新页面,这样性能会更好一些,不会隔段时间就刷新页面。