2017-02-01 3 views
0

modal screenshotüberprüfen, ob E-Mail in der Datenbank SQL existieren mit codeigniter und AJAX

i ein Formular innerhalb Bootstrap-modal haben, möchte ich überprüfen, ob die E-Mail bereits in der Datenbank vorhanden sind. das Ergebnis direkt auf die leere Seite mit diesem Ding '{"valid": false, "msg": "Email ist bereits vergeben"}'. Ich möchte, dass die msg so aussieht, wie ich es im Screenshot sehe.

Ansicht

<?php echo form_open('KulinerControl/isEmailExist', 'id="myform"'); ?> 
    <div id="msg"> </div> 
    <input type="text" name="email" id="email" class="input-lg formcontrol"> 
    <button type="submit">Submit</button> 
</form> 

JS

$(document).ready(function(){ 
      $('#myform').on('submit', function(e) { 
      var email = $('#email').val(); 
      $.ajax({ 
       type: "POST", 
       url: "<?php echo base_url()?>KulinerControl/isEmailExist", 
       dataType: "json", 
       data: "email="+email,      
       success: function(data){ 
        if(data.valid){ 
         $('#msg').html(data.msg); 
        }else{ 
         $('#msg').html(data.msg); 
        } 
       } 
      }); 
     }); 
    }); 

-Controller

function isEmailExist(){ 
$email = $this->input->post('email'); 
$exists = $this->KulinerModel->isEmailExist($email); 
if($exists){ 
     $msg = array(
     'valid' => false, 
     'msg' => 'Email is already taken'); 
    }else{ 
     $msg = array(
     'valid' => true, 
     'msg' => 'Username is available'); 
    } 
    echo json_encode($msg);} 

Update Controller

function isEmailExist(){ 
$email = $this->input->post('email'); 
$exists = $this->KulinerModel->isEmailExist($email); 
if($exists){ 
    echo "Email is already taken !"; 
}else{ 
    $data = array(
     'nama' => $this->input->post('nama'), 
     'email' => $email, 
     'password' => md5($this->input->post('password')) 
    ); 
$query = $this->KulinerModel->addMember($data); 
redirect('/KulinerControl/'); 
    } 
} 

Vielen Dank im Voraus

+0

Also was ist das spezifische Problem oder die Frage? – charlietfl

+0

@charlietfl Ich möchte die msg zeigen, wie ich im Screenshot sir – highcal

+2

so angehängt, es ist eine CSS-Frage –

Antwort

0

Sie müssen aufhören, Ihr Formular zuerst zu senden, dann beginnen zu überprüfen. Wenn die Überprüfung dann in Ordnung ist, reichen Sie sie ein. ich würde das folgende verwenden

$(document).ready(function(){ 
     $('#myform').on('submit', function(e) { 
     e.preventDefault();  //<---- stop submiting the forms 
     var email = $('#email').val(); 
     $.ajax({ 
      type: "POST", 
      url: "<?php echo base_url()?>KulinerControl/isEmailExist", 
      dataType: "json", 
      data: "email="+email,      
      success: function(data){ 
       if(data.valid){ 
        $('#msg').html(data.msg); 
        $("#myform").submit(); //<---- submit the forms 
       }else{ 
        $('#msg').html(data.msg); 
       } 
      } 
     }); 
    }); 
}); 
+0

müssen hinzufügen "$ (" # myform "). Unbind (" abschicken ");" . aber es hat gut funktioniert, Sir, danke – highcal

0

denke ich, Echtzeit E-Mail-Überprüfung für Ihre Situation besser ist

<script> 
    $(document).ready(function(){ 
      $('#email').keyup(function(){ 
      var email = $('#email').val(); 
      $.ajax({ 
       type: "POST", 
       url: "<?php echo base_url()?>KulinerControl/isEmailExist", 
       data: "email="+email,      
       success: function(response){ 
         $('#msg').html(response); 
       } 
      }); 
     }); 
    }); 
</script> 

in Ihrem Controller

function isEmailExist() 
{ 
    $email = $this->input->post('email'); 
    $exists = $this->KulinerModel->isEmailExist($email); 
    if($exists){ 
     echo "Email is already taken"; 
    }else{ 
     echo ""; 
    } 

} 

einen einfachen Trick

$(document).ready(function(){ 
    $('#myform').on('submit', function(e) { 
     if ($.trim($("#msg").val()) === "") { 
      alert('please choose a different email id'); 
      return false; 
     } 
    }); 
}); 

Änderung einreichen Um zu verhindern, Ihr Formular Action Controller zu diesem

+0

Dank für die Antwort Herr, funktioniert Ihr Code gut. aber es kann immer noch eingereicht werden. Gibt es trotzdem, um das Senden zu verhindern, wenn der Fehler an ist, oder die Funktion auszulösen, wenn sie ohne Aktualisierung/Umleitung der Seite gesendet wird? – highcal

+0

@highcal Ich habe die Antwort bearbeitet, bitte versuchen Sie es erneut. Kommentar, wenn nicht funktioniert –

+0

Ich aktualisierte den Controller Sir, ich muss die Daten in die Datenbank einfügen, wenn Fehler nicht aufgetreten ist. Wenn Sie Ihren Code zum Einreichen verhindern, funktioniert das nicht gut. Tut mir leid, ich habe es vorher nicht aufgenommen. danke – highcal

Verwandte Themen