2011-05-15 112 views
1

我正在使用jQuery表单插件向服务器提交数据。在提交之前,我正通过ajax运行服务器端验证。所以结构是从jquery ajax响应中获取值而不设置异步false

function validateForm(formData, jqForm, options){ 
    var check = true; //have to set check to false to avoid form submit 

    .... 
    looping through form elements and putting values in to data array here 
    .... 

    function sendData(callback){ 

     $.ajax({ 
     url:'validate.php', 
     data:data, 
     dataType:'json', 
     //async:false, if I uncomment this, code works as I want 
     success:callback 
     }); 

    } 

    function processForm(response){ 
     $.each(response,function(i,res){ 
     //if validation is fail I'm setting check = false here 
     }); 
    } 

    sendData(processForm); 

    return check; 

}) 

因为我看到设置异步为false是不好的做法,我怎么能设置检查值为false使用回调?

回答

0

不要尝试返回数据。在回调内部(或者在你调用的函数中)做任何需要做的工作。

+0

你能给我举个例子吗? – ThilinaG 2011-05-15 07:54:58

+0

替换“/ /如果验证失败我在这里设置检查=假”与“做任何你想做的事情,如果检查是假的” – Quentin 2011-05-15 09:08:53

+0

如果验证失败,我需要从此函数返回false,所以jquery表单插件块提交。 – ThilinaG 2011-05-15 14:39:27

0

你见过jQuery .submit()函数吗?您可以致电.preventDefault()取消提交验证失败的提交。

实例的jQuery:

<script> 

$("form").submit(function() { 
    if ($("input:first").val() == "correct") { 
    $("span").text("Validated...").show(); 
    return true; 
    } 
    $("span").text("Not valid!").show().fadeOut(1000); 
    return false; 
}); 

</script> 

你可以做你的验证和提交两个阶段 - 验证,然后再使用提交在OnAJAXSuccess处理程序。

+0

我使用jQuery表单插件来提交数据。 [链接](http://jquery.malsup.com/form/) – ThilinaG 2011-05-15 07:54:16