2013-07-22 33 views
0

我使这个代码验证了我的表单(ajax),但它不起作用,(不执行Checkpage函数)。我如何验证我的表单(AJAX)?

$('#myform').submit(function(e){ 
    function Checkpage(catego){ 
     var desc=$('#descripcion').val(); 
     var title = $("#title").val(); 
     var parametros = {"descripcion":desc,"title":title}; 
     $.ajax({ 
      data: parametros, 
      url: 'Check.php', 
      type: 'post', 
      beforeSend: function() { 
       $("#Checkpage").html("..."); 
      }, 
      success: function (response) { 
       if(response!=" "){ 
        alert(response);                           
       } else { 
        alert('Process'); 
        $("#myform").submit(); 
       } 
      } 
     }); 
    } 
}) 

请帮我

+1

所以......你要提交一次值进行验证,然后再提交他们是否有效?为什么不直接对提交进行验证? –

+0

你确定它没有执行该功能吗?在'console.log('test');''var desc = $('#descripcion')。val();'之上抛出''。另外,请点击Google Chrome中的F12,然后转到网络面板,查看您的AJAX请求发生了什么。 – user1477388

+0

我想先进行验证,然后提交。 @ElGuapo – Alvaro

回答

0

你所有的提交功能,目前还仅仅是声明名为Checkpage()功能不调用它。只需删除Checkpage()函数声明,并让代码的其余部分直接在submit()函数中运行。

然后当然,你不需要调用submit()递归。您需要做的是返回true,如果验证通过以允许提交执行其预期操作或返回false以防止表单提交。

但是为了做到这一点,您需要在返回true/false响应之前实际等待ajax调用的结果,因为此调用是异步的。一种方法是使用async: false使呼叫成为阻塞同步呼叫。然后您可以设置一个标志来指示POST是有效的并返回标志的值。

那么你最终与可能是这样的:

$('#myform').submit(function(e){ 
    var validationSuccess = false; 
    var desc=$('#descripcion').val(); 
    var title = $("#title").val(); 
    var parametros = {"descripcion":desc,"title":title}; 
    $.ajax({ 
     data: parametros, 
     url: 'Check.php', 
     type: 'post', 
     async: false, 
     beforeSend: function() { 
      $("#Checkpage").html("..."); 
     }, 
     success: function (response) { 
      if(response == " ") { 
       // this is valid request 
       valdidationSuccess = true; 
      } 
     }  
    }); 
    return validationSuccess; 
}); 
+1

他(或她)是否需要同步调用这个ajax?从成功返回“真”或“假”只适用于“成功方法”在事件函数中声明的方法变量将需要创建并设置在“成功” –