javascript - 带有 jquery .append 的多个异步 AJAX

标签 javascript jquery ajax

我有几个 ajax 将其结果附加到 HTML 表中。 代码示例是这样的

$.ajax({
    url: '<?php echo Url::toRoute('booking/get_1_rate'); ?>',
    type: 'GET',
    dataType: 'json',
    async: true,
    data:{          
    },          
    success: function(data){
         display_rate(data);
    }
}); 

$.ajax({
    url: '<?php echo Url::toRoute('booking/get_2_rate'); ?>',
    type: 'GET',
    dataType: 'json',
    async: true,
    data:{          
    },          
    success: function(data){
         display_rate(data);
    }
 });    

function display_rate(data)
{
    $.each(data.departure, function(index, value)
    {
        html_depart = "<tr><td>value.airline_code</td></tr>";
        $('#table_body_search_flights_depart').append(html_depart);
    });    
}

问题是HTML表格中出现的结果取决于哪个ajax先完成,那么晚的ajax结果将不会出现在HTML表格中。 看起来 jquery .append() 只是追加第一个 ajax 结果。

我检查了第二个ajax中包含html的字符串及其良好/成功,但该字符串没有附加到第二个ajax中的html。仅第一个ajax中附加到html的字符串

有什么想法吗?

最佳答案

您可以看看我在这里找到的一些方便的方法: https://medium.com/coding-design/writing-better-ajax-8ee4a7fb95f

它将允许您进行多个 ajax 调用并以几种不同的方式使用适当的 promise 。

似乎对您的情况特别有用的方法可能是 .done() 和/或 .when() --

多个 AJAX 调用

var a1 = $.ajax({...}),
    a2 = $.ajax({...});

$.when(a1, a2).done(function(r1, r2) {
    // Each returned resolve has the following structure:
    // [data, textStatus, jqXHR]
    // e.g. To access returned data, access the array at index 0
    console.log(r1[0]);
    console.log(r2[0]);
});

AJAX 调用的依赖链

var a1 = $.ajax({
             url: '/path/to/file',
             dataType: 'json'
         }),
    a2 = a1.then(function(data) {
             // .then() returns a new promise
             return $.ajax({
                 url: '/path/to/another/file',
                 dataType: 'json',
                 data: data.sessionID
             });
         });

a2.done(function(data) {
    console.log(data);
});

我从链接中获取了这两个示例。

希望有帮助!

关于javascript - 带有 jquery .append 的多个异步 AJAX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48782141/

相关文章:

javascript - 如何从 Javascript 中的自定义属性获取元素?

javascript - 使用函数更改全局变量

jquery - Div 内容溢出问题

java - JSP将 "rendered"图像另存为

php - 无论我如何尝试都无法让 PHP 刷新工作

php - 使用 ajax 函数根据下拉列表更改 select 语句的表?

javascript - 将文件图像保存到本地存储 HTML

Javascript 在点击时添加类

javascript - 如何在 ajax 调用成功函数期间将 html 内容插入到特定的 div 元素?

javascript - 当每个节点的子节点数大于 5 时,图形飞出屏幕