用ajax发送http请求并等待

时间:2012-11-12 00:40:53

标签: ajax curl webserver

我正在尝试使用AJAX向我的服务器发出HTTP请求,但在我的服务器中会有两个curl请求。

其中一个会更快,我可以将JSON发送到前端吗?当我让另一个响应时发送另一个JSON? 我如何通过AJAX捕获第一个和第二个JSON?

谢谢。

2 个答案:

答案 0 :(得分:1)

基本上Ajax中的第一个A用于同步,因此触发两个不同的请求并期望它们以并行方式运行是默认的。每个调用都有一个callbackhandler,如果两个请求都已完成,它可以检查页面上的某个状态对象。所以魔术将需要在回调处理程序中发生。

希望有所帮助。

答案 1 :(得分:1)

  

只有一个请求(通过AJAX触发),但有两个响应(从服务器)到该请求。有可能吗?

不,那是不可能的。 HTTP是请求 - 响应协议。每个请求都有一个响应。您的页面用户不需要知道已发送多个请求。他们不会注意到。

可以修复服务器端。你的服务器端应该获取这两个请求,等待直到他们完成,然后从两个请求中编写一个答案。该组合答案可以发送给客户端。这样,客户端和服务器之间就有一个请求响应,服务器和第三方之间有两个请求 - 响应。

澄清一下,这是你得到的:

 browser          server            3rd party
          request
   |---------------->|
   |                 | proxy
   |                 |       req1
   |                 |----------------->| 
   |                 |<-----------------|
   |                 |       req2
   |                 |----------------->|
   |     response    |<-----------------|
   |<----------------|

我最初的假设是你想做的事:

 browser          server            3rd party
          request
   |---------------->|
   |                 | proxy
   |                 |       req1
   |                 |----------------->| 
   |      response   |<-----------------|
   |<----------------|
   |                 |
   |      request    |
   |---------------->|
   |                 |       req2
   |                 |----------------->|
   |     response    |<-----------------|
   |<----------------|

(根据您的要求)可能被压缩为:

 browser          3rd party
          request
   |---------------->|
   |      response   |
   |<----------------|
   |                 
   |      request    
   |---------------->|
   |     response    |
   |<----------------|

这可能会容易得多。

(开始在我的上一个答案中将其作为对你评论的评论,但它有点复杂,所以这就是为什么我把它作为一个单独的答案,对不起。)

相关问题