2010-03-24 166 views
1

我想在我的PHP端進行驗證,然後讓我的JQuery代碼顯示your changes have been saved,當點擊提交按鈕時,但JQuery代碼聲明即使驗證失敗也保存了更改。JQuery和PHP驗證問題?

我該如何解決這個問題,以便PHP可以做驗證,然後JQuery可以在PHP完成驗證後做到這一點?

這是我的JQuery代碼。

$(function() { 
    $('#changes-saved').hide(); 
    $('.save-button').click(function() { 
     $.post($('#contact-form').attr('action'), $('#contact-form').serialize(), function(html) { 
      $('div.contact-info-form').html(html); 
      $('#changes-saved').hide(); 
      $('#changes-saved').html('Your changes have been saved!').fadeIn(4000).show(); 
     }); 

     $('a').click(function() { 
      $('#changes-saved').empty(); 
      $('#changes-saved').hide(); 
     }); 

     return false; // prevent normal submit 
    }); 
}); 

這是我的PHP代碼的一部分。

// Check for an email address: 
if (preg_match ('/^[\w.-][email protected][\w.-]+\.[A-Za-z]{2,6}$/', $_POST['email'])) { 
    $email = mysqli_real_escape_string($mysqli, strip_tags($_POST['email'])); 
} else { 
    echo '<p class="error">Please enter a valid email address!</p>'; 
} 
+0

能你可以添加php代碼 – 2010-03-24 07:02:43

回答

1

您應該在客戶端和服務器端(即同時使用JavaScript和PHP)驗證它。如果這是不可能的,我會考慮異步發佈表單並使用javascript解析來自服務器的回覆,以確定是否保存了更改。

2

在jquery中你可以添加一個if語句來檢查php驗證是否通過, 在php中你需要返回一個類似1 \ 0或true \ false的值。

併爲您在jQuery的這個參數

我添加例如其使用JSON,但同樣的問題

的jQuery:

 $.post($('#contact-form').attr('action'), $('#contact-form').serialize(), function(data_pack){ 
      if(data_pack.msg ==1){ 
       # success do something .... 
          ......... 
      } 

      alert(data_pack.html); 

     }, 'json'); 

PHP代碼,如:

if($validation_ok){ 
    $arr = array('msg'=>1,'html'=>$html); 
} 
else { 
    $arr = array('msg'=>0,'html'=>$error_msg); 
} 
echo json_encode($arr); 
exit; 
+0

我的JQuery if語句如何。一種新的JQuery。 – DuH 2010-03-24 07:06:49