在ajax回调之后进行ajax调用是一个好习惯吗?

时间:2016-01-21 09:18:16

标签: 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
        }, 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是否是一个好习惯?

非常欢迎所有建议和意见。提前感谢您对此的启发。

1 个答案:

答案 0 :(得分:0)

回答这个问题:

  • 如果两个ajax调用是两个不同的服务而第二个调用取决于第一个响应,我会这样做。
  • 如果它们是独立服务,我将使用promises并在两者都解决后进行回调。

也许不是专注于问题本身,但我觉得奇怪的是只为一个真实动作(第二个)做两个服务器调用。
我要做的就是打一个电话。如果验证没有通过,则返回错误。如果它通过,则调用服务器端的其他php并向客户端返回vlid响应 服务器应该执行相同的工作,但是您可以保存从客户端到服务器的一个数据传输 这只是一个意见。我希望它对你有帮助。