Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在一次单击中为不同的ajax使用两个或多个URL_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 在一次单击中为不同的ajax使用两个或多个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'

我需要从许多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'
        $.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()
+