同时发送两个AJAX请求

时间:2017-12-07 19:33:32

标签: javascript php jquery ajax

我可能在这里遗漏了一些非常简单的东西,但我想要做的是在我的页面上更新两个divs,同时点击一个项目时同时调用AJAX请求。

我看过here 但不幸的是,我仍然遗漏了代码中的一些内容。

我有以下JavaScript代码:

$(document.body).on('click', '.details', function(event) {
    //  $(this) = your current element that clicked.
    // additional code
    var id = event.target.id;
    //alert(id);
    //alert($(this));
    _formurl = "home_stocktake_locations_list_group.php";
    _formdata = {
        'store_id': id
    };
    _formurl2 = "home_stocktake_list.php";
    $.ajax({
            type: "GET",
            url: _formurl,
            data: _formdata,
            success: function(xhrResponse) {
                $('#current').html(xhrResponse);
                var rowCount = $('#locations').length;
                row_count = parseInt(rowCount);
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                $('#alert_msg').html(errorThrown);
                $('#alert_msg').fadeIn("slow");
            }
        }),
        $.ajax({

            type: "GET",
            url: _formurl2,
            data: _formdata,
            success: function(xhrResponse) {
                $('#previous').html(xhrResponse);
                var rowCount = $('#dd_home_stocktake').length;
                row_count = parseInt(rowCount);
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                $('#alert_msg').html(errorThrown);
                $('#alert_msg').fadeIn("slow");
            }
        });

});

当我查看控制台中发生的情况时,只调用home_stocktake_locations_list_group.php文件,完全忽略第二个AJAX调用。是什么造成的?

在控制台中,我只能看到以下内容:

request

4 个答案:

答案 0 :(得分:1)

在第一个$.ajax之后,您有一个,(逗号),请替换为;(分号)。那么,它对我来说很好。

此外,如果您要发送有关请求的数据,请考虑使用$.post而不是较低级$.ajax。此外,您有相同的错误例程,因此将其隔离:

function handleError(xhr, status, error) {
  $('#alert_msg').html(error);
  $('#alert_msg').fadeIn('slow');
}

$.post(_formurl, _formdata)
  .done(function(data) {
    $('#current').html(data);
    var rowCount = $('#locations').length;          
    row_count = parseInt(rowCount);
  })
  .fail(handleError);

$.post(_formurl2, _formdata)
  .done(function(data) {
    $('#previous').html(data);
    var rowCount = $('#dd_home_stocktake').length;          
    row_count = parseInt(rowCount);
  })
  .fail(handleError);

答案 1 :(得分:0)

AJAX请求是异步完成的,因此您可以直接启动它们(即在第二个$ .ajax命令之前没有逗号)。

如果您的AJAX请求彼此依赖并且必须在特定的ordre中完成,请在" success"中启动第二个请求。第一个请求的一部分。

答案 2 :(得分:0)

罗德里戈没错。在第一个,之后丢失$.ajax并替换为;

}),
$.ajax({

变为

});
$.ajax({ 

答案 3 :(得分:0)

使用单独的promise中的每个请求,并且当所有promise都已解析时,然后函数触发事件以更改DOM。