我可以在JavaScript或jQuery中一次命中两个或多个Ajax请求吗?
我的意思是我知道提出这个问题似乎很疯狂,但早些时候我接受了采访,他们问了我这个问题。在采访之后,我对此进行了大量搜索,但一无所获。
我刚刚发现你可以把另一个Ajax请求作为第一个回调。但这根本不是真实的故事。
我有疑问,sync or async
在这方面有什么作用吗?
如果有人有解决方案,jsfiddle或plunkr上的POC也会受到赞赏。
JavaScript专家,请帮忙。 在此先感谢!!
答案 0 :(得分:4)
如果您使用的是jQuery,则可以使用deferred objects。基本上你可以执行多个ajax请求,当一切完成后,就会执行一个回调。
有关详细信息,请查看http://api.jquery.com/jquery.when/。还有一个简单的例子:
$.when( $.ajax( "/page1.php" ), $.ajax( "/page2.php" ) )
.then( myFunc, myFailure );
答案 1 :(得分:1)
总之 - 不,你不能。
您可以按顺序进行多次回调,或您可以向服务器端的多个点发出所有请求。
您可以始终连续执行两个ajax请求,但无法保证它们将以何种顺序返回各自的回调。
答案 2 :(得分:1)
看,如果你想在单个xmlHttpRequest上发送2个网址,我想,这是不可能的。
并且假设有可能,我们如何能够找到服务器发送的数据作为响应哪个响应是针对哪个URL请求?
答案 3 :(得分:0)
在同一事件上调用2个请求,使它们异步。
$("#btn").click(function(){$.get("foo.php");$.get("bar.php");});
答案 4 :(得分:0)
我不确定你的意思是什么?但是说得很清楚。
async - 不等待来自ajax请求的响应
同步 - 等待来自ajax的响应
取决于你想做什么。
编辑:阅读其他回复后。澄清一下,如果你想要多个并发的并发ajax请求,你需要为每个请求提供并发连接。这就是可能的。答案 5 :(得分:0)
你可以只用两次ajax命中,但是如果你想要超过两次ajax命中,那么我总是会推荐ajax。
$.ajax({ url: '/Job/multipleajax/', contentType: "application/json; charset=utf-8", dataType: "json", type: "POST", data: JSON.stringify(id), success: function (response) { alert("first ajax hit"); } }).always(function () { // second ajax call here }).always(function () { // Third ajax call code here })