如何在成功输入时使“返回TRUE”


How to make `return TRUE` on successful input

我有一个注册表,它用JS和PHP验证用户的电子邮件,然后检查数据库以查看电子邮件是否存在。使用JSON,所有事情都发生在一个页面上。

我需要RETURN TRUE的成功结果,并将我带到注册序列的下一页。我在case: success下尝试了window.location,它将我带到正确的页面,但它不会带过我表单中的隐藏字段。

有人能给我一个应该如何执行的想法吗?

$(document).ready(function(){
$('#newsletter-signup').submit(function(){
    //check the form is not currently submitting
    if($(this).data('formstatus') !== 'submitting'){
        //setup variables
        var form = $(this),
            formData = form.serialize(),
            formUrl = form.attr('action'),
            formMethod = form.attr('method'), 
            responseMsg = $('#signup-response');
        //add status data to form
        form.data('formstatus','submitting');
        //show response message - waiting
        responseMsg.hide()
                   .addClass('response-waiting')
                   .text('Please Wait...')
                   .fadeIn(200);
        //send data to server for validation
        $.ajax({
            url: formUrl,
            type: formMethod,
            data: formData,
            success:function(data){
                //setup variables
                var responseData = jQuery.parseJSON(data), 
                    klass = '';
                //response conditional
                switch(responseData.status){
                    case 'error':
                        klass = 'response-error';
                    break;
                    case 'success':
                        klass = 'response-success';
                        //return true; I tried this but it fails.
                    break;  
                }
                //show reponse message
                responseMsg.fadeOut(200,function(){
                    $(this).removeClass('response-waiting')
                           .addClass(klass)
                           .text(responseData.message)
                           .fadeIn(200,function(){
                               //set timeout to hide response message
                               setTimeout(function(){
                                   responseMsg.fadeOut(200,function(){
                                       $(this).removeClass(klass);
                                       form.data('formstatus','idle');
                                   });
                               },3000)
                            });
                });
            }
        });
    }
    //prevent form from submitting
    return false;
});
});

您是否可以在成功时删除提交处理程序,并让表单提交为"真实"?

更换

//return true; I tried this but it fails.

$('#newsletter-signup').unbind('submit').submit();

旁注:从成功回调返回whatever不会使表单"做"任何其他事情。ajax函数完成后,return false;语句已经执行完毕。您需要再次重新提交表单,这次没有ajax。

将asyncronous选项设置为false,并设置ajax函数的结果var:

var result = false;
$.ajax(
{
    ...
    async: false,
    ...
    success: function(response)
    {
        ...
        ...
        result = true;
    }
});
return result;