没有回调成功函数的嵌套AJAX请求

时间:2017-11-20 10:54:04

标签: javascript php jquery ajax

阅读此帖后 jQuery Ajax Request inside Ajax Request

大家好,我需要解释一下这种情况。 我刚刚开始研究我的开发团队的一名前成员的代码,并发现代码的许多部分,他在其他ajax调用中进行异步ajax调用。

我的问题是:任何人都可以解释这种做法的优点和缺点,以及这是一种好的还是坏的做法?

以下是代码示例:

// first ajax (starting ajax call)
$.ajax({
    url: "script1.php", 
    type: "POST", 
    data: {paramFisrtAjax: "first-ajax"},
    success: function(response) {
       alert(response);
    }
});

script1.php

<script>    
// second ajax
$.ajax({
    url: "script2.php", 
    type: "POST", 
    data: {paramFirstAjax: "<?= $_POST['paramFisrtAjax'] ?>", paramSecondAjax: "second-ajax"},
    success: function(response) {
        alert(response);
    }
});
</script>
<?php 
// some operations on database server
echo "page2 operations with param: paramFirstAjax-> {$_POST['paramFirstAjax']}"; 
?>

script2.php

<?php 
// some operations on database server
echo "page3 operations with params: firstParam -> {$_POST['paramFisrtAjax']} and secondParam-> {$_POST['paramSecondAjax']}";
?>

有些东西告诉我这不是一件好事因为我认为正确的方法是使用回调函数success。 像这样:jquery nested ajax calls formatting

1 个答案:

答案 0 :(得分:2)

这里有一个优点和缺点。

优点是:

1) 您进行异步通话,使请求更快。您不必等待回调函数,因此不会等待您的响应,这可能需要一些时间才能返回。你在背景上做所有事情而不是直接前进#39; 当您调用多个方法并且不希望延迟等待回调时,这是可以理解的。

2) 您可以通过通话获取更大量的数据,同时最大限度地减少最终客户端等待的需求。 当您需要显示大量数据并且希望以最小的努力完成时,这非常有用。

缺点:

1)错误处理很痛苦。我 f内部调用失败了,发现失败需要时间,以及使用哪种方法。 在等待回调时,您可以立即检测到错误发生的位置,因为它将返回成功或错误的响应,

2)如果数据不匹配,很难追溯并查看丢失部分的位置,您必须逐个查看每个请求检测和使用开发人员工具和/或fiddler ,因为这些是最后的异步调用。

3)很容易在客户端上花费太多精力,因为维护这种技术可能会导致调用多个同时协同工作的方法,从而创建在使用服务器端代码等时,客户端上的过载,锁定线程或数据库

这解释了,您现在可以自行决定在代码中继续使用哪种方法。