2012-09-13 204 views
0

我面临的一个问题是,当我提交页面(表单)提交给PHP邮件是成功的,但页面再次加载。尝试返回true和false也preventDefault()但仍然页面重新加载。Jquery Ajax页面重新加载提交

$('#frmRequest').submit(function(e){ 
    //$('#SUBMIT').click(function(){ 
    var isValidForm = true; 
    $('#RequestDetailsArea').find('input:visible, textarea:visible, select:visible').each(function(){ 
     if($(this).val().length == 0|| $(this).val()=='Select') { 
      $(this).addClass('validation'); 
      isValidForm = false;  
     } 
     else { 
      $(this).removeClass('validation'); 
      $('#ErrorRequest').addClass('hidden');   
     } 
    });/* end check validation in RequestDetailsArea*/ 
    if (!isValidForm) { 
     $('#ErrorRequest').removeClass('hidden'); 
    } 
    validreturn=validateForm(); 
    if(isValidForm && validreturn) 
    { 
     $('#RequestDetailsArea').find('div:hidden').each(function(){ 
      //alert($(this).attr('id')); 
      $(this).remove(); 
     }); 

     msg="ok"; 
     $.ajax({ 
      url:"allfields.php", 
      type:"POST", 
      //  dataType:"json", 
      data: $("#frmRequest").serialize(), 
      success: function(msg){ 
       //alert("Form Submitted: "+ msg); 
       return msg; 

      }, 
      error: function() { 
       alert('Error occured'); 
      } 
     }); 
     e.preventDefault(); 

     //return false; 
    } 
});/* end of submit Function*/ 
+0

是您的表单立即提交而不验证它? –

+0

验证已通过if(isValidForm && validreturn) 在单独的函数中完成。 –

回答

0

在你的代码已经把e.preventDefault();

if(isValidForm && validreturn) 
{ 
    //... 
    e.preventDefault(); 
} 

因此,我认为,如果你的条件不匹配,因为方法e.preventDefault();的调用将不会被执行,则表格将被提交。如果是这种情况,那么你可以把它从你if条件,即,

$('#frmRequest').submit(function(e){ 
    e.preventDefault(); 
    // rest of your code here 
}); 

更新:你在你的success使用return msg,会做什么,你可以用这种方式

success: function(msg){ 
    returnValue(msg); // call the function  
} 

,并宣布在脚本中returnValue地方,比如

function returnValue(data) 
{ 
    // do something with data 
} 
+0

还没有工作! –

+0

你确定你的“成功”被称为? –

+0

是的成功被称为。该消息被POSTED。唯一的是页面重新加载。 –

相关问题