2015-08-25 37 views
1

關於模糊的電子郵件文本框,我希望它做ajax回調,並驗證電子郵件是否已被使用。簡單的ajax調用數據庫來驗證電子郵件php codeigniter

該調用正在查找webmethod,但是它返回空值。我修剪的代碼,我得到一個空值改爲:

function chkEmail(email) { 
    var prom = $.Deferred(); 

    console.log(email); 
    $('#emailCheckGIF').show(); 
    $('input[type="submit"]').prop('disabled', true); 

    $.ajax({ 
     url: 'emailAvailable', 
     data: { 'email': email }, 
     success: function (data) { 
      console.log(data + ' good'); 
      prom.resolve(data); 
     }, 
     error: function (jqXHR, textStatus, errorThrown) { 
      console.log(errorThrown + ' error'); 
      prom.reject(errorThrown); 
     } 
    }); 

    return prom; 
} 

我的簡化的Web方法

public function emailAvailable($email = null) { 


     echo json_encode($email); 
    } 

在Firefox的開發工具,它說的電子郵件參數是正確傳遞和該服務的響應爲空

如果我刪除json_encode它會以空白字符串的形式出現。

回答

1

請試一試 -

我的控制器 -

public function checkEmail() 
     { 
     $email = $_POST['email']; 
     $result = $this->federation_model->checkEmail($email); 
     echo json_encode($result); 
     } 

我的模型 -

public function checkEmail($email) 
     { 
      $this->db->where('user_email', $email); 
      $result=$this->db->get('users')->row_array(); 
      if(is_array($result)) 
       { 

        return $result; 
       } 
      else 
       { 
        return false; 
       } 
     } 

我的觀點 -

<div class="col-md-4"> 
<input name="assoc_email" id="assoc_email" type="email" class="form-control"/> 
<span id="line2" class="text-left"></span> 
</div> 

我的劇本 -

<script type="text/javascript"> 
    $(document).ready(function(){ 
     $('#assoc_email').keyup(function(){ 
      var email = $('#assoc_email').val(); 
      var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; 
// my ajax function will call after enter the valid email 
      if(email == "" || !filter.test(email)) 
       { 
        $('#line2').html(""); 
        $('#submit_assoc').attr('disabled', false); 
       } 
      if(filter.test(email) && email != "") 
       { 
        $.ajax({ 
        url:"<?php echo base_url(); ?>federation/checkEmail", 
        type:"post", 
        data:"email="+email,      
        success: function(data){ 
         var result = JSON.parse(data); 
         if(result == "") 
          { 
           $('#line2').html("<?php echo $this->lang->line('email'); ?> <?php echo $this->lang->line('available'); ?> "); 
           $('#line2').css('color', 'green'); 
          } 
         else 
          { 
           $('#line2').html("<?php echo $this->lang->line('email'); ?> <?php echo $this->lang->line('already'); ?> <?php echo $this->lang->line('exists'); ?>"); 
           $('#line2').css('color', '#f3565d'); 
          } 

        } 
        }); 
       } 
     }); 
    }); 
</script> 
+0

謝謝!使用$ _POST ['email']取得了訣竅! – dave

+0

您的歡迎@dave .. –