2016-06-20 28 views
0

Ich benutze codeigniter Rahmen um ein Registrierungsformular zu erstellen Ich habe auch jQuery verwenden, um die Felder zu validieren die Validierung funktioniert, aber nach dem Füllen aller Details und klicken Sie auf Register-Taste nichts passiert jQuery nicht Daten an Controller senden. bitte helfenjQuery Validierung mit Codeigniter und Ajax Einreichung funktioniert nicht

Hier ist mein HTML-Code:

<form method="post" action="" name="sentMessage" id="contactForm" novalidate > 
     <div class="row"> 
      <div class="col-sm-12"> 
       <h3>Registration Form</h3> 
      </div> 
      <div class="col-sm-12"> 
       <div class="form-group"> 
        <input class="text required" type="text" placeholder="UserName" name="username" id="uname" data-validation-required-message="Please enter your UserName." /> 
        <p class="help-block text-danger"></p> 
       </div> 
       <div class="form-group"> 
        <input class="text required" type="text" placeholder="First Name" name="fname" id="fname" data-validation-required-message="Please enter your First Name."/> 
        <p class="help-block text-danger"></p> 
       </div> 
       <div class="form-group"> 
        <input class="text required " type="text" placeholder="Last Name" name="lname" id="lname" data-validation-required-message="Please enter your Last Name."/> 
        <p class="help-block text-danger"></p> 
       </div> 
       <div class="form-group"> 
        <input class="text required email" type="email" placeholder="Email" name="email" id="uemail" data-validation-required-message="Please enter your Email."/> 
        <p class="help-block text-danger"></p> 
       </div> 
       <div class="form-group"> 
        <input class="text required" type="password" placeholder="Password" name="password" id="upassword" data-validation-required-message="Please enter your Password."/> 
        <p class="help-block text-danger"></p> 
       </div> 
       <div class="form-group"> 
        <input class="text required" type="password" placeholder="Confirm Password" name="cpassword" id="cpassword" data-validation-required-message="Please enter your Password."/> 
        <p class="help-block text-danger"></p> 
       </div> 
      </div> 
     </div> 
     <div class="row"> 
      <div class="col-xs-12 rst-contactsubmit"> 
       <div class="form-group"> 
        <!-- required data-validation-required-message="Please enter your message." --> 
        <p class="help-block text-danger"></p> 
        <div id="success"></div> 
       </div> 
       <input class="btn btn-primary btn-lg" type="submit" value="REGISTER" /> 
      </div> 
     </div> 
    </form> 

Mein jquery Code:

 if(jQuery("#contactForm").length) { 
      jQuery("#contactForm input").jqBootstrapValidation({ 
       preventSubmit: true, 
       submitError: function(jQueryform, event, errors) { 
        // additional error messages or events 
       }, 
       submitSuccess: function(jQueryform, event) { 
        event.preventDefault(); // prevent default submit behaviour 
        // get values from FORM 
        var username = jQuery("input#contact-username").val(); 
        var fname = jQuery("input#contact-fname").val(); 
        var lname = jQuery("input#contact-lname").val(); 
        var email = jQuery("input#contact-email").val(); 
        var password = jQuery("input#contact-password").val(); 
        var firstName = fname; // For Success/Failure Message 
        // Check for white space in name for Success/Fail message 
        if (firstName.indexOf(' ') >= 0) { 
         firstName = fname.split(' ').slice(0, -1).join(' '); 
        } 
        jQuery.ajax({ 
         type: "POST", 
         url: "<?php echo base_url()?>index.php/login/create_user", 
         data: { 
          username: username, 
          fname: fname, 
          lname: lname, 
          email: email, 
          password: password, 
         }, 
         cache: false, 
         success: function() { 
          // Success message 
          jQuery('#success').html("<div class='alert alert-success'>"); 
          jQuery('#success > .alert-success').html("<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>&times;") 
           .append("</button>"); 
          jQuery('#success > .alert-success') 
           .append("<strong>Your message has been sent. </strong>"); 
          jQuery('#success > .alert-success') 
           .append('</div>'); 

          //clear all fields 
          jQuery('#contactForm').trigger("reset"); 
         }, 
         error: function() { 
          // Fail message 
          jQuery('#success').html("<div class='alert alert-danger'>"); 
          jQuery('#success > .alert-danger').html("<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>&times;") 
           .append("</button>"); 
          jQuery('#success > .alert-danger').append("<strong>Sorry " + firstName + ", it seems that server is not responding. Please try again later!"); 
          jQuery('#success > .alert-danger').append('</div>'); 
          //clear all fields 
          jQuery('#contactForm').trigger("reset"); 
         }, 
        }) 
       }, 
       filter: function() { 
        return jQuery(this).is(":visible"); 
       } 
      }); 
     } 

Und mein Controller-Code:

<?php 
class Login extends CI_Controller 
{ 

     function __construct() 
     { 
      parent::__construct(); 
     } 

     public function index(){ 

      $this->load->helper(array('form')); 
      $this->load->view('login'); 

     } 

     function validate_credentials(){ 

      $this->load->model('membership_model'); 
      $query = $this->membership_model->validate(); 

      if($query){ 

       $data = array('username' => $this->input->post('username'), 'is_logged_in' => true); 
       $this->session->set_userdata($data); 
       redirect('<?php base_url()index.php/user_dashboard'); 
      } 
     } 

     function create_user(){ 

      $this->load->library('form_validation'); 
      $this->form_validation->set_rules('username', 'Username', 'trim|required|callback_check_username'); 
      $this->form_validation->set_rules('fname', 'Name', 'trim|required'); 
      $this->form_validation->set_rules('lname', 'Last Name', 'trim|required'); 
      $this->form_validation->set_rules('email', 'Email-id', 'trim|required|valid_email|callback_check_email'); 
      $this->form_validation->set_rules('password', 'Password', 'trim|required|min_length[4]'); 
      $this->form_validation->set_rules('cpassword', 'Confirm Password', 'trim|required|matches[password]'); 

      if($this->form_validation->run() == FALSE){ 
       echo "fail"; 
      } 

      else{ 
       $this->load->model('membership_model'); 

       if($query = $this->membership_model->create_user()) 
       { 
        $data['account created'] = 'your account is created'; 
        $this->load->view('login', $data); 
       } 
       else{ 
        $this->load->view('register'); 
       } 
      } 

     } 

     function check_username($requested_username){ 
      $this->load->model('membership_model'); 

      $username_available = $this->membership_model->check_username($requested_username); 

      if($username_available){ 
       return TRUE; 
      } 
      else{ 
       return FALSE; 
      } 
     } 

     function check_email($requested_email){ 

      $this->load->model('membership_model'); 

      $email_available = $this->membership_model->check_email($requested_email); 

      if($email_available){ 
       return TRUE; 
      } 
      else{ 
       return FLASE; 
      } 
     } 
} 
?> 
+0

Überprüfen Sie die Konsole, um festzustellen, ob Sie einen Fehler im Code haben. – Zeeshan

+0

Sie verwenden so /Index.php/login/create_user – vijaykumar

Antwort

0

Das Problem scheint in der jQuery zu sein Code

url: "<?php echo base_url()?>index.php/login/create_user", 

jQuery liest keinen PHP-Code. versuchen, es zu ändern

url: "login/create_user", 

Hoffe, dass dies hilft.

+0

Vielen Dank ..... :) aber nach der Korrektur Formular nicht Wert in der Datenbank eingeben ... –

+0

@NiteshJadhav können Sie Erfolg-Funktion in Ajax Anruf ändern obj Parameter wie diese 'Erfolg (obj)' und dann warnen Sie die obj.message und sagen Sie mir, was Sie sehen? 'alert (obj.Message);' –

+0

Seine Show "Ihre Nachricht wurde gesendet." aber nichts in der Datenbank –

0

Codeigniter-Validierung funktioniert nicht mit Jquery/Ajax-Formularübergabe. Bitte manuell die Validierung do ...

foreach($_POST as $key =>$value){ 
    if($value==''){ 
    echo 'Error'; 
} 

} 

Durch diese Antwort des Servers können Sie den Benutzer alarmieren Oder einfach https://jqueryvalidation.org/documentation/ Verwendung dieses Client-Seite Validierung.

Verwandte Themen