我可以在JavaScript或jQuery中一次命中两个ajax请求吗?

时间:2014-01-03 15:36:28

标签: javascript jquery ajax

我可以在JavaScript或jQuery中一次命中两个或多个Ajax请求吗?

我的意思是我知道提出这个问题似乎很疯狂,但早些时候我接受了采访,他们问了我这个问题。在采访之后,我对此进行了大量搜索,但一无所获。

我刚刚发现你可以把另一个Ajax请求作为第一个回调。但这根本不是真实的故事。

我有疑问,sync or async在这方面有什么作用吗?

如果有人有解决方案,jsfiddle或plunkr上的POC也会受到赞赏。

JavaScript专家,请帮忙。 在此先感谢!!

6 个答案:

答案 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
    })