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

标签 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);
    }
});

脚本1.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) 您进行异步调用,使请求速度更快。您不会等待回调函数,因此也不会等待您的响应,这可能需要一些时间才能返回。你所做的一切都是在后台进行的,而不是“直接”进行。 当您调用多个方法并且不希望延迟等待回调时,这是可以理解的。

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

缺点:

1) 错误处理很痛苦。如果内部调用中出现故障,则需要时间来检测故障是否发生以及发生在哪个方法上。 在等待回调时,您可以立即检测到错误发生的位置,因为它会返回成功或错误的响应,

2)如果数据不匹配,则很难回溯并查看丢失部分发生在哪里,您将不得不一一检查每个请求检测和使用开发人员工具和/或 fiddler ,因为这些是最后的异步调用。

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

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

关于javascript - 没有回调成功函数的嵌套 AJAX 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47390325/

相关文章:

javascript - jQuery scrollTop(val) 在页面刷新时不起作用

javascript - 如何在我的 javascript 生成列表的 <li> 部分中放置更多超链接

javascript - 如何使用 php 获取 jquery id 值?

javascript - Highcharts 循环 JSON 对象来填充数据系列

javascript - 使最宽的文本行适合 div 并更改第二行以匹配比率

javascript - 如果列可见(未隐藏),则将链接设为粗体

php - 无法在 Linux 上的 PHP 中启用 cURL 支持

javascript - jQuery 错误 : replaceWIth/html mangles my DOM (all tags go out of form tag)

PHP 通知 : Array to string conversion only on PHP 7

php - 从 FasctCGI 返回响应到 nginx