在网站A,点一个按钮,调用网站B的接口,发送数据给网站B,要等网站B处理完后,网站A也是通过另外一个接口取得网站B的返回的数据。现在改成,网站A通过接口发送数据给网站B,由于网站B处理的数据需要时间很长,一般用户会把网页关掉,网站A就得不到网站B返回来的数据,能不能在网站A建立一个接口或页面什么的,在用户关掉网页后,也会自动接收网站B返回来的数据。注意,网站A取得网站B的数据,只能通过网站B提供的接口来获取,网站B不支持异步传输数据方式给网站A。
调试欢乐多
网站B,是别人的网站,我们两个网站有数据来往,就得相互处理数据,他们只提供接口调用方式。
用户登录我们的网站A,点击提交按钮后,就往网站B(通过网站B提供的接口)发送请求,网站B收到请求后,要花时间处理,有时候处理时间比较长,用户等得不耐烦,就把网页关掉了,那就取不到网站B返回的数据是什么了。
现在怎么在用户关掉页面后,网站B处理好后把处理结果通知网站给网站A的这个用户(已关掉网页了)。
难道你是用户直接和银行交互?
就要像用户直接和供货商交易,还要你这个中间商有什么用?
用户提交数据给A,到这一步,用户就把网页关了,
A还会继续处理?
我的所有处理程序逻辑都在这个页面上,如果把这个页面关掉了,网站A就不会往下处理了的。
不知有什么办法,用户提交数据到A的什么页面或服务,即使把这个页面关闭了,也继续处理下去。
如果A再把结果呈现给用户,最后一步,那也只能等用户再次打开网页比如订单列表查看是否缴费成功了。
就算我开csdn发个帖然后关闭页面,有人回复我,我以后随时再来csdn的时候也一样能看到提示的
1. B網站 保存請求結果,並提供查詢歷史記錄的接口
2. A網站 保存請求結果
3. 雙方都不保存結果先說第三種,由於雙方都不保存結果,中途關閉之後這個結果就丟失了。其他兩種(1,2說起來就是一種,也就是可以查詢到請求結果的歷史記錄 ):
你可以在用戶發起請求的時候記錄一個請求編號,是否已經查看結果。比如用Cookie,數據庫等。
用戶在綫接收完結果才關閉:當接收到結果的時候,就把上面說的請求編號的記錄丟掉,或者把已經查看結果改成是,Cookie建議丟掉,完成。
用戶沒接收完就關閉: 由於請求的結果已經被保存了,當用戶重新打開的時候,就檢查一下是否有未查看結果的請求記錄,如果是的話根據請求編號,發個請求到A 或者 B 查詢歷史記錄,把結果顯示給用戶,丟掉請求記錄,完成。
補充一下:
如果是直接在用戶瀏覽器Ajax提交數據的,並中途關閉的,那麼只有在 B網站 保存請求結果,並提供查詢歷史記錄的接口,情況下,才有可能獲取到最後的結果。
如果是先提交到A後臺,A再提交到B,B返回的結果先發到A的後臺,那麼A就可以保存這個結果。如果用戶在綫就直接返回給用戶,如果已經關閉了。就等待用戶重新上線查詢的時候再取出返回。所以,如果要能在關閉之後,重新上線還能獲取結果,那一定要保存請求的記錄。