在执行多个ajax请求时处理验证

时间:2015-06-30 00:04:03

标签: jquery ajax playframework

场景如下,我有一个新的屏幕,它只是一个复选框和2个字段,当用户接受拥有新功能时,这些字段是可选的。请求调用这两个字段已经在其他屏幕上单独存在,它们更新表并对给定的输入进行验证。

我在下面的当前版本是尝试让它工作的一点点黑客。我遇到的主要问题是,如果一个或两个字段请求返回验证错误,那么我不希望RegisterUserForNewFunction运行,因为它将重定向到新页面。我猜是因为他们是异步的if if statment试图在他们完成之前执行。该应用程序也是用playframework编写的,如果有帮助的话,我是两个新手,所以我确定可能有些东西我忽略了。

<script type="text/javascript" charset="utf-8">
$('#Update').click(function() {
    hide_error();
    var field1processed; 
    var field2processed; 
    if($('#checkbox').prop("checked") == true){
        addField1();
        addField2();
        if(field1processed == true && field2processed == true){
            RegisterUserForNewFunction();
        }       
    }
    else {
        prompt_reminder('checkbox must be clicked to proceed.');
    }

    function addField1(){
        if($('#form-field1').val() != ''){
            $.ajax({
                   url: '@{request.updatefield1()}',
                   data: { field:  $('#form-field1').val() },
                   success: function(data, textStatus, jqXHR) {
                       display_status('Successfull', 'field1 added.', function(){
                           field1processed = true;
                       });
                    },
                   error: function(response, status, errorThrown) {
                       function_error(response);
                   },
                   type: "POST"
            });
        } else {
            field1processed = true;
        }
    }
    function addField2(){
        if($('#form-field2').val() != ''){
            $.ajax({
                url: '@{request.updateForfield2()}',
                data: { field:  $('#form-field2').val() },
                success: function(data, textStatus, jqXHR) {
                    display_status('Successfull', 'Field2 added.', function(){
                        field2processed = true;
                    });
                },
                error: function(response, status, errorThrown) {
                    function_error(response);
                },
                type: "POST"
            });
        }else {
            field2processed = true;
        }
    }
    function RegisterUserForNewFunction(){
        $.ajax({
            url: '@{request.newFunction.create(user)}',
            success: function(data, textStatus, jqXHR) {
                display_status('Successfull', 'registeredUserforNewFunction', function(){
                    location.href='@{web.redirect.listPage(user)}';
                })
            },
            error: function(response, status, errorThrown) {
                function_error(response);
            },
            type: "POST"
        });
    }
});

0 个答案:

没有答案