我正在尝试使用 AJAX 向我的服务器发出 HTTP 请求,但在我的服务器中将有两个 curl 请求。
其中一个会更快,我可以只向前端发送一个 JSON,当我有另一个响应时发送另一个 JSON?我如何通过 AJAX 捕获第一个和第二个 JSON?
谢谢你。
基本上,Ajax 中的第一个 A 用于异步,因此触发两个不同的请求并期望它们并行运行是默认设置。每个调用都会有一个回调处理程序,如果两个请求都已完成,它可以检查页面上的某些状态对象。所以魔术需要在回调处理程序中发生。
希望有帮助。
只有一个请求(通过 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.)