3

我有两个 ajax 调用,但由于某种原因,其中一个 ajax 没有按计划工作。

一个 ajax 调用正在从站点获取数据ajax1.php,然后另一个 ajax 正在从中获取数据,ajax2.php并且它应该更改其中的一些数据ajax1.php

所以我有index.php,ajax 是这样的

这是index.php

    $.ajax({
        type: "GET",
        data: "id="+id+"&id-other="+id-other,
        url: "ajax1.php"
    }).done(function(data){
        $("#div").html(data);

    });

    $.ajax({
        type: "GET",
        data: "id_1="+id+"&id_2="+id_2,
        url:"ajax/ajax2.php"
    }).done(function(data){
        $("#change_data").html(data);

    });

<div id="div">
<div id="change_data"><!-- This div is supposed to be in ajax1.php so it only appears after the first ajax is done.!--></div>
</div>

问题是#change_data 没有正确显示。它会在一秒钟内显示它应该显示的内容,然后消失。不确定是什么问题。我尝试延迟:$("#change_data").delay.(1000).html(data_changed);像这样,但不起作用。我尝试将整个 ajax 函数放在第一个 .done() ajax 函数中,但这不起作用。

这可能是因为当第一个 ajax 加载时,第二个 ajax 尝试比第一个 ajax 加载得更快。第一个 ajax 有更多的信息,所以它可能需要加载更长的时间?

有任何想法吗?谢谢 也许还有另一种方法可以将第二个 ajax 放在第一个等成功的情况下,它会调用第二个 ajax?

4

2 回答 2

8

也许还有另一种方法可以将第二个 ajax 放在第一个等成功的情况下,它会调用第二个 ajax?

就在这里:

$.ajax({
    type: "GET",
    data: "id="+id+"&id-other="+id-other,
    url: "ajax1.php"
}).done(function(data){
    $("#div").html(data);
    $.ajax({
        type: "GET",
        data: "id_1="+id+"&id_2="+id_2,
        url:"ajax/ajax2.php"
    }).done(function(data){
        $("#change_data").html(data);
    });
});
于 2012-04-28T03:05:21.033 回答
3

$.ajax 调用是异步的,所以第一次调用不能保证在第二次调用发生时完成。您应该在第一次调用的回调中进行第二次调用,例如:

$.ajax({
        type: "GET",
        data: "id="+id+"&id-other="+id-other,
        url: "ajax1.php"
    }).done(function(data){
        $("#div").html(data);


        $.ajax({
           type: "GET",
           data: "id_1="+id+"&id_2="+id_2,
           url:"ajax/ajax2.php"
        }).done(function(data){
           $("#change_data").html(data);
        });

});
于 2012-04-28T03:09:51.260 回答