jQuery单击-发布/获取返回成功';返回值

jQuery单击-发布/获取返回成功';返回值,jquery,ajax,post,get,click,Jquery,Ajax,Post,Get,Click,[name=AddClientSubmit]。。。是表单上的“提交”按钮 $.POST发送表单数据,POST脚本返回一个json响应,其中包含一条错误消息 如果没有错误消息,我希望将click函数返回为true,以便提交表单,如果有错误,则返回false 我下面的脚本的问题是javascript没有等待$.POST完全完成,而且从未设置submitForm值,因此表单会自动提交。 $('[name="addClientSubmit"]').click(function() { var

[name=AddClientSubmit]。。。是表单上的“提交”按钮

$.POST发送表单数据,POST脚本返回一个json响应,其中包含一条错误消息

如果没有错误消息,我希望将click函数返回为true,以便提交表单,如果有错误,则返回false

我下面的脚本的问题是javascript没有等待$.POST完全完成,而且从未设置submitForm值,因此表单会自动提交。

 $('[name="addClientSubmit"]').click(function() {
    var submitForm = false;
    var buttonObj = $(this);
    buttonObj.hide();

    $.post(
        '/jquery/scripts/contacts_clientAddEdit.php',
        $('#addClientForm').serialize(),
        function(json) {
            if(json.error == '') {
                submitForm = 'yes';
            } else {
                jAlert(json.error, 'Error', function() {
                    buttonObj.show();   
                });
                submitForm = 'no';  
            }
        },
        'json'
        );

        if(submitForm == 'yes') { return true; }
        if(submitForm == 'no') { return false; }
     });

问题是$.post方法是异步的,因此它将在提交完成之前返回。有一种方法可以关闭此功能,但它会导致浏览器挂起,有时会让用户觉得它崩溃了


与其创建两个单独的帖子,一个用于AJAX功能,另一个用于表单,为什么不将它们结合起来呢?这将解决您的问题,并为用户带来更快的响应时间。

您可以通过以下方式修改代码来实现这一点:

$('[name="addClientSubmit"]').click(function() {
var submitForm = false;
var buttonObj = $(this);
buttonObj.hide();

$.post(
    '/jquery/scripts/contacts_clientAddEdit.php',
    $('#addClientForm').serialize(),
    function(json) {
        if(json.error == '') {
            submitForm = 'yes';
            return true;
        } else {
            jAlert(json.error, 'Error', function() {
                buttonObj.show();   
            });
            submitForm = 'no';  
            return false;
        }
    },
    'json'
    );

});

不幸的是,这个“新客户机”表单的设置方式在几个不同的管理部分中使用。提交表单后,每个管理部分都会将用户重定向到不同的页面。所以基本上,这个AJAX调用只是通过POST验证表单。我希望有另一份工作。我想我可以传入admin节类型,然后返回POST success函数可以处理的重定向URL。“我想我可以传入admin节类型,然后返回POST success函数可以处理的重定向URL。”我接受“我猜”,你觉得这可能有点像黑客,但我向你保证不是。服务器端重定向仍然会将URL返回给客户端,这只是由浏览器自动处理的。允许javascript处理这个机制从根本上来说没有什么错。谢谢你的帮助!我真的不认为这是一个黑客,我只是在这个项目上工作了很长时间,我希望我的第一个思考过程是正确的答案,因为我没有心情改变/重新编码。我理解这种情绪,但我可以向你保证,如果你实现的方法充分利用了AJAX方法学的潜力,你会感受到巨大的风险满足。该方法不起作用,因为返回true或false不在$.POST success函数之外。可以使用stop()和submit()函数以不同的方式工作。例如,在success函数中执行$('#addClientForm').submit()。