Codeigniter Ajax Post:始终返回相同的数据

时间:2017-03-31 02:15:50

标签: javascript php jquery ajax codeigniter

我是codeigniter的新手,并使用诸如javascript,jQuery,Ajax等。 刚才,我正在尝试构建一个像访客管理系统这样的应用程序,通常需要条形码。

这是我的数据库表:

tbl_vin

这是我的模特:

public function selectX($tbl, $where)
{
    return $this->db->get_where($tbl, $where);
}

这是我的控制器:

public function check_av_vin(){
  $vin = $this->input->post('f1');
  $where = array('Vin'=>$vin);
  $result = $this->crud_m->selectX('tbl_vin', $where);
  if($result->num_rows() > 0){
    echo "1";
  }else{
    echo "0";
  }
}

以下是我的观点:

<input class="form-control" type="text" name="f1" id="barcode" autofocus></input>

这是我的JS(在同一视图上):

$(document).ready(function() {
$("#barcode").on('keydown', function(event) {
  if (event.keyCode == 13) {
    var bc = $("#barcode").val();
    $.ajax({
      url: "<?php echo site_url('Lobby/check_av_vin')?>",
      data: {Vin : bc},
      type: 'POST',
      success: function(data){
        if(data == '1'){
          alert("VIN Already Exist!");
          $("#barcode").val("");
          $("#barcode").focus();
        }
        else if(data == '0'){
          alert("VIN available!");
          $("#barcode").val("");
          $("#barcode").focus();
        }
        else{
          alert("Error");
          $("#barcode").val("");
          $("#barcode").focus();
        }
      }
    });
    $("#name").focus();
    return false;
  }
});

问题是: 无论我插入正确的条形码如'VIN00001'或错误的条形码或不插入任何文本并点击回车,它总是获得字符串'0'的数据并始终获得警报'VIN可用'。我不知道问题出在哪里。 请帮帮我。

2 个答案:

答案 0 :(得分:1)

您是通过Ajax发送数据,而您发送的数据是{ Vin : whatever }  所以要在你的check_av_vin()函数中得到这个:你需要:$vin = $this->input->post('Vin');而不是$vin = $this->input->post('f1');

答案 1 :(得分:1)

您的代码中有错误的变量名称。

在你使用的check_av_vin()函数中

$this->input->post('f1');

虽然在表单中输入名称为f1,但是当您发送ajax请求时,请输入

data: {Vin : bc},

只需将以下内容解决您的问题。

$this->input->post('Vin');