多个ajax调用同步工作

时间:2012-08-03 09:11:14

标签: jquery ajax

我正在使用的Ajax代码:

$(document).ready(function(){
        $.ajax({
            url:"load_search_list.php",
            async:true,
            beforeSend: function()
            {
                $("#loadStatus" ).html('laoding 1');
            },
            success: function(msg)
            {
                $("#loadStatus").html(msg);
                $.ajax({
                    url : 'load_search_complete_list.php',
                    async:true,
                    success: function(msg)
                    {
                        alert(msg)
                    }
                });
            }
        });
        $('input#detail').click(function(){
            $.ajax({
                url:laod_details.php,
                data:{id: $(this).val()},
                async:true,
                success: function(res)
                {
                    $('#detail'+$(this).val() ).html(res);
                }       
            });
        });
});

我正在使用下面提到的3个ajax调用 - 1.此调用从数据库加载前10条记录并显示给用户 2.第一个ajax成功后,我使用这个ajax调用从数据库加载其余的细节。 3.这个ajax coll我用来加载从数据库中提取的记录的细节。

现在当加载前10个记录时,另外一个ajax调用会加载其余的记录,但是如果我尝试获取屏幕上显示的任何记录的详细信息,则此ajax调用仅在执行之后执行第二个ajax调用完成我甚至尝试使用async true但它没有帮助我。

2 个答案:

答案 0 :(得分:0)

试试这种方式。我不确定

$(document).ready(function(){
         $('input#detail').click(function(){
            $.ajax({
                url:"load_details.php",
                data:{id: $(this).val()},
                async:true,
                success: function(res)
                {
                    $('#detail'+$(this).val() ).html(res);
                }       
            });
        });

        setTimeout(function(){
        $.ajax({
            url:"load_search_list.php",
            async:true,
            beforeSend: function()
            {
                $("#loadStatus" ).html('laoding 1');
            },
            success: function(msg)
            {
                $("#loadStatus").html(msg);
                $.ajax({
                    url : 'load_search_complete_list.php'
                    async:true,
                    success: function(msg)
                    {
                        alert(msg)
                    }
                });
            }
        });
     },100);

});

答案 1 :(得分:0)

laod_details.php更改为"load_details.php"

由于缺少引号和拼写错误的网址名称,请求失败(或者更可能是因为laod_details不是有效的对象名称而导致语法错误)。 如果服务器响应错误代码(例如在这种情况下找不到404),则在ajax请求中没有error回调,将不会收到通知。在您的请求中添加error: function() {...}选项。