0

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

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

谢谢你。

4

2 回答 2

1

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

希望有帮助。

于 2012-11-12T22:43:51.380 回答
1

只有一个请求(通过 AJAX 触发),但对该请求有两个响应(来自服务器)。是否可以?

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

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

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

 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    |
   |<----------------|

这可能会容易得多。

(Started typing this as a comment to your comment on my last answer, but it gets a little complex, so that's why I'm making it a separate answer, sorry about that.)

于 2012-11-13T09:31:27.673 回答