【问题标题】:Send http request with ajax and wait使用ajax发送http请求并等待
【发布时间】:2012-11-12 00:40:52
【问题描述】:

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

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

谢谢。

【问题讨论】:

  • 您是说要发送两个 AJAX 请求吗?您是要并发(同时)发送,还是顺序发送(一个接一个)?

标签: ajax curl webserver


【解决方案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    |
   |<----------------|

这可能会容易得多。

(开始输入此内容作为您对我上一个答案的评论的评论,但它有点复杂,所以这就是我将其作为单独答案的原因,对此感到抱歉。)

【讨论】:

  • 这就是我想知道的。我想知道没有浪费太多时间来发出请求,因为从浏览器发出的每个请求都必须通过服务器中的 curl 收集数据。非常感谢。
【解决方案2】:

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

希望对您有所帮助。

【讨论】:

  • 不,我可能没有解释清楚。只有一个请求(通过 AJAX 触发),但对该请求有两个响应(来自服务器)。有可能吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-09
  • 2013-11-18
  • 2014-11-24
  • 2020-08-17
  • 1970-01-01
相关资源
最近更新 更多