2016-06-16 10 views
0

I-Funktion am folgenden Daten an den PHP-Server zu überprüfen und senden:nicht in der Lage, Daten senden über this.serialize

$(document).ready(function() { 

$(function() { 
    // Setup form validation on the #register-form element 
$("#register_form").validate({ 

    // Specify the validation rules 
    rules: { 
     register_username: "required", 
     register_password: "required", 
     register_email: { 
      required: true, 
      email: true 
     }, 
     register_confirm_password: { 
      required: true, 
      equalTo: '#register_password' 
     }, 
    }, 

    // Specify the validation error messages 
    messages: { 
     register_username: "Please enter your username", 
     register_password: "Please enter your password", 
     register_confirm_password: { 
      required: "Please provide a password", 
      equalTo:"Please enter password same as above." 
     }, 
     register_email: "Please enter a valid email address", 
    }, 

    submitHandler: function(form) { 
     var pdata = $(this).serialize(); 
     alert(pdata); 


     $.ajax({ 
      type: 'POST', 
      url: 'http://localhost/quiz/index.php/signin', 
      data: $(this).serialize(), 
      dataType : 'json', 
      success: function(data) { 
       if (data.success){ 
        console.log("Form is submitted.data is" + data.success); 

        $.each(data, function() { 
         $.each(this, function(k, v) { 
          console.log("key; " + k); 
          console.log("value; " + v); 
         }); 
        }); 

       } 
       else 
       { 
        console.log("The data returned is:" + data.success); 
       } 
      }, 
      error: function(jqXHR, textStatus, errorThrown) { 
       console.log(textStatus, errorThrown); 
      } 
     }); 
     return false; 
    }, 
}); 
}); 

}); 

Aller Validierung funktioniert, aber das Problem ist mit der Zeile:

var pdata = $(this).serialize(); 

ich bin immer leer pdata:

alert(pdata); 

ich weiß nicht, warum die Daten hier nicht serialisiert wird. Bitte hilf mir, das zu lösen.

Antwort

0

$(this) ist nicht, was Sie denken, dass es mehr ist. Es ist nicht #register_form, sondern die submitHandler Funktion.

Wenn Sie console.log(pdata) tun, sollten Sie die Funktionsdefinition in Ihrer Konsole sehen.

+0

Sie für die Hilfe danken. – learner

1

Nicht serialisieren $ (this) Versuchen Sie stattdessen, das Formular zu serialisieren.

$("#register_form").serialize(); 
+0

danke für die Hilfe. – learner

0

Der Umfang der submitHandler Funktion ist nicht das form Element, so this ist nicht auf das Element zeigen Sie benötigen. Es ist jedoch, das Sie mit einem Parameter zur Verfügung stellen, die Sie form benannt haben, dass Sie stattdessen verwenden können, wie folgt aus:

submitHandler: function(form) { 
    $.ajax({ 
     type: 'POST', 
     url: 'http://localhost/quiz/index.php/signin', 
     data: $(form).serialize(), 
     // your code... 
Verwandte Themen