我是codeigniter的新手,并使用诸如javascript,jQuery,Ajax等。 刚才,我正在尝试构建一个像访客管理系统这样的应用程序,通常需要条形码。
这是我的数据库表:
这是我的模特:
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可用'。我不知道问题出在哪里。 请帮帮我。
答案 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');