Javascript 在一次单击中为不同的ajax使用两个或多个URL
我需要从许多URL API中使用超过1个json。对于每个URL,我会做不同的事情,但它必须是一个相同的时间。我将用1个URL填充表格的一些标题,用2或3个URL填充表格的信息 我有这样的想法:Javascript 在一次单击中为不同的ajax使用两个或多个URL,javascript,jquery,ajax,Javascript,Jquery,Ajax,我需要从许多URL API中使用超过1个json。对于每个URL,我会做不同的事情,但它必须是一个相同的时间。我将用1个URL填充表格的一些标题,用2或3个URL填充表格的信息 我有这样的想法: $(document).ready(function(){ $("#my_button").click(function(){ var urlOne = 'http://example1', var urlTwo = 'http://example2'
$(document).ready(function(){
$("#my_button").click(function(){
var urlOne = 'http://example1',
var urlTwo = 'http://example2'
$.ajax({
url: urlOne,
success: function(result){
console.log(result);
$('#some_div').hide();
$('#another_div').show();
$('.some_class').append(result[0].some_data);
etc...
},
error: function (exception) {
$('#modal_error').modal('show');
}
});
$.ajax({
url: urlTwo,
success: function(result){
$('#myTabContent').show();
populateHeaders($("#headers"),result);
etc...
}
});
//And maybe more ajax calls.
});
});
如何才能做到这一点 在本例中,我使用创建方法并在ajax成功时调用它 比如说
$.ajax({
url: urlOne,
success: function(result){
console.log(result);
$('#some_div').hide();
$('#another_div').show();
$('.some_class').append(result[0].some_data);
hereFunctionCallAnotherAjaxOne();
},
error: function (exception) {
$('#modal_error').modal('show');
}
});
const hereFunctionCallAnotherAjaxOne = () => {
$.ajax({
url: urlTwo,
success: function(result){
$('#myTabContent').show();
populateHeaders($("#headers"),result);
}
});
}
但是阅读有关JavaScript REST API及其工作原理的文章,我不理解这个问题。您正在进行两个单独的ajax调用,它们将彼此独立运行。不清楚此设置的问题是什么。您是否在询问如何在所有三个请求完成后同时应用所有更改?在这种情况下,请使用Promise.all()@ChrisG yes,因为按照我的方式,DOM的更新很奇怪,有些事情比另一件事情先更新。一个简单的解决方案是在ajax1的成功方法中运行ajax2,等等。这样,它们一个接一个地发生,当最后一个完成时,您就拥有了所有可用的数据。或者,如我所说,使用Promise.all():
Promise.all([$.getJSON(url1),$.getJSON(url2),$.getJSON(url3)])。然后(result=>{…})
在我放置省略号的地方,您现在可以使用result[0]
、result[1]
和result[2]
来引用回复。如果不使用jQuery v3,则可以使用$.when()
+