2010-03-24 127 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