jQuery AJAX在另一个AJAX调用中。同步和完成的问题

时间:2014-03-04 09:15:14

标签: javascript jquery ajax

我得到一个带有AJAX调用的用户列表,但在AJAX中我调用另一个AJAX来获取第一次AJAX调用无法获得的信息。

这基本上就是我正在使用的结构,我已经删除了一些只会混乱的不必要的代码,这里可能存在一些语法错误。 但代码基本上有效但存在一些问题。

function doAJAX(){
    $(".loading").show();
    $("#table").hide();

    $.ajax({
    type: "POST",
    url: "@Url.Action("Action", "Controller")",
    data: { variable: varVariable},
    dataType: "json",
    success: function (data) {
        $.each(data, function (index, value) {
            $.ajax({
                type: "POST",
                url: "@Url.Action("Action", "Controller")",
                data: { variable: value.id},
                success: function (data2) {
                $.each(data2, function (index2, value2) {
                    $("#tableBody").append("<tr><td>" + value.test +"</td><td>" + value2.test +"</td></tr>");
                });
                }
            });
       });
    }
    });
}
  1. 我在开始时隐藏我的桌子,当AJAX完成时我想再次显示它。我应该把它放在哪里?即使我将它放在第一个AJAX成功函数的末尾,它也不起作用,因为它在另一个AJAX仍在运行时被执行。

  2. 出于某种原因,每次AJAX运行时,我的列表都以奇数顺序结束,我的列表按字母顺序排序但是这个AJAX每次都会随机结束,有时用户Adam处于开始状态,有时候在中间等等。列表本身很好并且顺序正确

  3. 我做了很多数学,这可能会减慢第二次AJAX调用,这可能是为什么它以一种奇怪的顺序结束

  4. 这两个问题都发生了,因为两个AJAX并没有“一起”运行,而是单独运行,是否有办法使它们彼此同步,并且有一种确保AJAX完成的好方法我可以出示我的桌子吗?

1 个答案:

答案 0 :(得分:0)

在循环中发送ajax请求似乎不是一个好主意。为什么不发送一个带有id数组的ajax请求作为数据,在你的服务器端脚本中只获取“WHERE id IN(id_list)”用户记录数组并将它们作为json编码对象返回,然后在双循环内输出,首先是<tr>,第二是输入字段。

对不起,我无法提供代码,因为我不知道从您的服务器请求返回了什么。