Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在ajax回调之后进行ajax调用是一种好的做法吗?_Javascript_Php_Jquery_Ajax - Fatal编程技术网

Javascript 在ajax回调之后进行ajax调用是一种好的做法吗?

Javascript 在ajax回调之后进行ajax调用是一种好的做法吗?,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我想知道在ajax回调函数(可以称为嵌套ajax调用)中创建ajax是一种好的实践吗?无论如何,这是我的例子 ajax.js $(document).ready(function() { $('#button').click(function() { var string = 'some string'; $.post('ajax-call.php', { string: string }, func

我想知道在ajax回调函数(可以称为嵌套ajax调用)中创建ajax是一种好的实践吗?无论如何,这是我的例子

ajax.js

$(document).ready(function() {
    $('#button').click(function() {
        var string = 'some string';
        $.post('ajax-call.php',
        {
            string: string
        }, function(result) {

            if(result == 'success') {

                // Second ajax call if result returned is success
                $.post('second-ajax.php',
                {
                    variable: 'Some Variable'
                }, function(second_result) {

                    if(second_result == 'yes') {
                        // Do some thing when the second result returned 'yes'
                    } else {
                        // Alert error or something
                    }
                });

            } else {
                // If first result is not success, show a message
            }
        });
    });
});
基本上我有两个单独的php文件,在不同的时间调用,如果第一个ajax调用返回“success”,那么继续调用第二个ajax调用。或者我应该使用一个ajax调用、一个php脚本,并根据回调的结果决定要做什么?下面的例子

ajax2.js

$(document).ready(function() {
    $('#button').click(function() {
        var string = 'some string';
        $.post('ajax-call.php',
        {
            string: string
        }, function(result) {
            if(result == 'success') {
                // Do something
            } else if(result == 'unsuccessful') {
                // If first result is not success, show a message
            } else {
                // Show error message
            }
        });
    });
});
*注意:这两个php脚本都是一个很长很重的脚本,第一个脚本是用于验证ajax调用的代码,如果所有内容都正确验证,则继续执行第二个ajax调用以将数据处理到数据库中,依此类推。第一个示例将使脚本更加干净整洁,但我想知道这样使用嵌套ajax是否是一种好的做法


欢迎提出所有建议和意见。提前感谢您在这方面给我的启发。

回答问题:

  • 如果两个ajax调用都是两个不同的服务,并且第二个调用取决于第一个响应,那么我将这样做
  • 如果它们是独立的服务,我将使用Promissions并在两者都解决后进行回调
也许没有把重点放在问题本身上,但我觉得只需要一个真正的动作(第二个动作)就进行两次服务器调用很奇怪。
我要做的就是只打一个电话。如果验证未通过,则返回错误。如果通过,调用服务器端的另一个php并向客户端返回vlid响应。
服务器应该做同样的工作,但您只保存一次从客户端到服务器的数据传输。

那只是一种意见。我希望它对您有所帮助。

您最好创建一个服务器端脚本来处理所有逻辑,并在服务器端调用这两个脚本。然后,您只需在客户端发出一个请求来处理来自服务器的所有相关数据。如果您需要两个请求,那么链接承诺比嵌套Ajax调用更为简洁。这使得这些电话可以以多种方式重复使用,而目前的情况将它们永久地固定在一起:)谢谢你的建议@A.Wolff那么你是说第二个脚本(ajax2.js)更好?@TrueBlueAussie你说的链承诺是什么意思?Ajax()返回jQuery承诺。您可以从2个助手函数返回承诺,并使用
.then()
链接调用。与使用回调嵌套Ajax调用相比,更灵活、更易于维护。