有人能指出我在正确的方向关于我的问题如何使异步请求
- 我有一个运行年度的结算系统。
- 当前限制是用户运行结账过程后,他/她必须留在页面中,直到结算完成。
- 我需要这样做:一旦计费仍在处理中,我可以导航到不同的页面。一旦完成,我会收到通知。
我该怎么做?任何输入都会有帮助。我只是需要想法来开始这个..
有人能指出我在正确的方向关于我的问题如何使异步请求
我该怎么做?任何输入都会有帮助。我只是需要想法来开始这个..
要有导航到其他页面,并获得在共用首部的通知的能力,需要一点点更复杂的设计。这里的基本概念:
您的服务器,确保了独特的cookie在浏览器中随时存在用户点击您的请求可以被开启新的一页。此cookie将用于跟踪用户,以便您知道哪个结算交易与哪个浏览器一起使用。如果已经有一个登录cookie,您也可以使用它。
使用异步Ajax调用(它们是默认的异步)来提交请求。在jQuery中,您可以使用$.ajax()
或$.post()
或$.get()
执行此操作,具体取决于您要使用的选项。收到请求时,服务器需要获取标识用户的唯一cookie并将其保存为事务处理的一部分,以便知道哪个浏览器通知完成。
一旦请求被提交,它就会在服务器上继续完成,而不管用户做什么。
现在,您需要设置一种方法来在您的通用标题中获得完成通知。有几个不同的方式,你可以这样做:
在共用首部可以设置在具有这个共同的报头中的网站WebSocket连接到服务器的每个网页上的一些代码。这个webSocket将允许服务器在与该用户的cookie匹配的账单处理完成时直接向浏览器发送通知。在服务器上连接webSocket时,它需要记录连接的套接字和匹配的cookie,以便知道哪个用户使用哪个webSocket。然后,当结算交易完成后,它可以找到具有相应cookie的webSocket并向其发送通知。浏览器将通过webSocket接收通知,然后可以显示任何想要的视觉通知。
取代webSockets,您可以在浏览器中设置事务挂起cookie,并在事务设置时给它一个相对较短的到期时间(可能是15分钟)。然后,在当前的网页,并在网站上的任何其他页面,你检查,看看是否能交易悬而未决cookie存在,如果是这样,你一个重复计时器使用Ajax调用轮询服务器(可能每隔几分钟)询问服务器与您的cookie或用户ID的交易是否完成。当服务器报告完成后,您会显示您想要显示的任何视觉通知。您需要在您站点的所有网页的某个常见位置使用此轮询代码(可能位于公共标题中)。
要求用户更新他们的网页或浏览到一个新的页面才能看到该通知。对于这种方法,你就只能在服务器保留任何未决的通知,它有给定用户,每当用户请求一个页面,您的服务器可以插入到通知共用首当它呈现在网页的轨道。这是从用户的角度来看的角度最不理想的实现,因为他们没有主动通知,除非他们碰巧航行在正确的时间(他们必须手动刷新的通知)的网站。
哇...谢谢...清晰的画面......按我的要求......会接受这个作为答案...谢谢jfriend00 – 2014-12-04 03:14:51
你可以利用jQuery的AJAX请求。请参阅下面的文档。
一旦执行成功的AJAX请求,有一个.done()
功能,需要一个回调,并在完成后将运行...还有,你可以执行以下行:
window.location.href='http://www.example.com';
这将允许您导航到输入的URL。以下是假设您正在执行GET请求。
例解:
$.ajax({
url: "test.html",
}).done(function() {
window.location.href='http://www.example.com';
});
感谢您的答复...一个问题....请求已作出时嗨,你好,没有必要对我来说,等待回调吗? – 2014-12-04 02:18:13
没问题。回调将成为'.done()'中的函数。一旦你从你的AJAX请求得到回应,这将自动运行。在这个例子中,它将浏览器导航到输入的URL。 – justinpinili 2014-12-04 02:19:41
我明白....这让我浏览到的网页型动物,它是完成时,重定向我回来...... bcoz最初我想我要做的有关线程的东西... – 2014-12-04 02:25:49
如果用户导航到其他页面,您会如何得到通知?他们可能导航到的所有页面都有一些共同的标题,通知可能在哪里?或者,您如何期望用户在去http://www.google.com时收到通知? – jfriend00 2014-12-04 02:43:34
所有的页面都有一个共同的标题..我只是想提示用户帐单处理完成。 – 2014-12-04 02:48:59