2012-06-02 103 views
2

提交我有一個HTML表單jQuery的驗證,與submitHandler

<form method="POST" action="" name="myform" id="myform"> 
    <input type="text" name="email" id="email" /> 
    <input type="supmit" name="submit" id="submit" value="submit" /> 
</form> 

和jQuery的代碼:

$(document).ready(function(){ 
    var validator = $("#myform").validate({ 
     ignore: ".ignore", 
     rules: {...}, 
     messages: {...}, 
     submitHandler: function(form) { 
      $.post('usr.php?resetpw', $(this).serialize(), function (data, textStatus) { 
       form.submit(); 
       alert(data.inf); 
      },'json'); 
     }, 
}); 

也PHP代碼usr.php不會獲得$ _ POST - 變量(isset($_POST['email']) = false

if(isset($_GET['resetpw'])) { 
    $loggingData = array(
     'inf' => utf8_encode("Your email address is: ".$_POST['email']), 
     'errorEmail' => '', 
     'mailExists' => '', 
     'success' => '', 
    ); 
} 
echo json_encode($loggingData); 

什麼是後達到PHP變量正確的代碼?

謝謝

+0

什麼樣的記錄都做了什麼?你有沒有在Firebug/Developer工具中檢查請求以查看數據是否真正發送?嘗試'$('#myform')。serialize()','this'可能不是指那個函數內部的形式。 –

+0

或使用'$(form).serialize()' –

回答

4

我只是檢查validate插件的源從這裏http://jquery.bassistance.de/validate/jquery.validate.js

和它調用submitHandler這樣

validator.settings.submitHandler.call(validator, validator.currentForm); 

這意味着this將參考validator object不是form,所以使用form參數來引用表單並將其序列化「S場這樣

$(form).serialize() 
2

序列化formthis。 所以submithandler將看起來像下面..

submitHandler: function(form) { 
     $.post('usr.php?resetpw', $(form).serialize(), function (data, textStatus) { 
      form.submit(); 
      alert(data.inf); 
     },'json'); 
}, 
+0

感謝您的迴應 – iff

0
$("#form_id").trigger('submit'); 

試試這個

相關問題