2012-09-13 247 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。唯一的是頁面重新加載。 –

相關問題