CodeIgniter使用ajax和jQuery进行实时检查

时间:2018-01-25 07:23:40

标签: javascript php jquery ajax codeigniter

我希望我的表单直接使用ajax和jQuery检查我的输入,但它无法正常工作

这是我的表单输入

<div class="form-group">
    <label for="exampleInputEmail1">NIP</label>
    <input type="text" name="nip" id="nip" class="form-control" placeholder="NIP" maxlength="18" required>
    <span id="pesannip" name="pesannip"></span>
</div>

来自上面输入表单的jQuery

<script>
  $(document).ready(function(){
    $('#nip').blur(function(){
      $('#pesannip').html('sedang mengecek');
      var nip = $(this).val();
      var len=nip.length;
      if (len==0) {
        $('#pesannip').text("NIP tidak boleh kosong");
        $('#nip').css('border', '3px #C33 solid');
      }
      else {
        if (!valid_notelp(nip)) {
          $('#pesannip').text("NIP tidak valid");
          $('#nip').css('border', '3px #C33 solid');
        }
        else if (len>0 && len<18) {
          $('#pesannip').text("NIP terlalu pendek, harus 18 angka");
          $('#nip').css('border', '3px #C33 solid');
        }else {
          $.ajax({
            type : 'POST',
            url : "<?php echo base_url('index.php/dosen/cek_nip_dosen') ?>",
            data : 'nip='+nip,
            success : function(data)
            {
              if (data=='gada') 
              {
                $("#pesannip").html("NIP bisa digunakan");
                $('#nip').css('border', '3px #090 solid');
              }
              else if(data=='ada')
              {
                $("#pesannip").html("NIP sudah digunakan oleh pengguna lain");
                $('#nip').css('border', '3px #C33 solid');
              }
            }
          });
        }
      }
    });

    function valid_notelp(notelp){
    var pola = new RegExp(/^[0-9-+]+$/);
    return pola.test(notelp);
    }
  });
</script>

我的模型名为model_dosen

public function cek_nip($nip)
    {
        $cek = $this->db->query("select * from detail_dosen where nip='$nip'");
        return $cek->result();
    }

最后我的控制器命名为dosen

public function cek_nip_dosen()
    {
        $this->load->model("model_dosen");
        $nip = array('nip' => $this->input->post('nip'));
        $hasil_cek = $this->model_dosen->cek_nip('$nip');
        if (count($hasil_cek)==0)
        {
            echo 'gada'; //data not exist
        }
        else 
        {
            echo 'ada';
        }
    }

当我插入任何数据(数据编号的类型)时,跨度始终显示&#34; NIP bisa digunakan&#34;这意味着即使数据存在于数据库中,我输入的数据也不存在于数据库中。

有人可以帮助我。

提前感谢。

3 个答案:

答案 0 :(得分:2)

请勿在{{1​​}}方法中用单引号将变量名称换行。您需要更改以下行:

cek_nip_dosen()

$hasil_cek = $this->model_dosen->cek_nip('$nip');

答案 1 :(得分:0)

更改您的ajax数据选项:

从:

数据:&#39; nip =&#39; + nip

到:

data: {"nip":nip}

并从&#39; $ nip&#39;更改您的模型输入$ nip

答案 2 :(得分:0)

尝试

$ hasil_cek = $ this-&gt; model_dosen-&gt; cek_nip($ nip);