是否可以从客户端异步向服务器发送两个ajax请求?

时间:2012-08-02 13:00:59

标签: php ajax asynchronous request

我的情况是我有一个页面,卖家将接受客户的订单,在客户订单后,卖家点击确认按钮并等待客户通过他的身份证,我这样做ajax请求并弹出一个包含产品列表,消息和取消按钮的对话框。

在我的ajax在服务器端发出后,我正在做一个' for'睡个好觉的'检查用户是否已通过他的卡,然后如果他有,我将这些项目放入他的账单(坚持进入数据库)。问题是,如果用户决定取消de proccess,我就无法获得取消ajax请求,因为它忙于服务器端的第一个请求并等待其返回。

有人对此有任何建议吗?我真的希望网站的工作流程如下:

客户订单 - >卖家添加商品并点击确认 - >客户通过确认或卖家可以取消 - >过程结束

1 个答案:

答案 0 :(得分:2)

即使有一种简单的方法可以按照你的方式进行,但这个过程会在超过一些连接之后迅速压倒服务器。

我会将客户的订单存储到数据库中,然后才需要他的身份证明,订单上的状态字段设置为“等待识别”,或类似的东西。然后,您可以继续识别流程,而无需等待PHP脚本,并节省大量资源。

如果客户无意中断开连接,您仍然会保存她的订单,并允许她稍后完成身份验证。

最后,当客户端成功完成识别时,您只需将订单的状态字段更新为“已验证”,即表示已准备好进行处理。


编辑:要解决您的特定问题,请考虑以下流程:

  1. 您将订单保存为“待定标识”并显示“等待...”对话框。

  2. 您每隔几秒就会执行一个非常简单的请求,询问订单状态是否已更改,以了解对话框何时需要关闭。

  3. 在某些时候,识别设备会发送一个确认请求,您可以在该请求中检索订单并更改其状态。然后,您在步骤2中实施的定期调用将启动并隐藏对话框。

  4. 会话不是一个好的位置作为临时存储介质,但Redis,Memcached或类似的服务可以帮助您简化该过程,因为设备和站点可以以某种方式共享信息。