Soy nuevo en codeigniter y uso javascript, jQuery, Ajax, etc. Justo ahora, estoy tratando de crear una aplicación como un sistema de gestión de visitantes, que generalmente toma un código de barras.
Aquí está mi tabla en la base de datos:
Aquí está mi modelo:
public function selectX($tbl, $where) { return $this->db->get_where($tbl, $where); }Aquí está mi controlador:
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"; } }Aquí está mi vista:
<input class="form-control" type="text" name="f1" id="barcode" autofocus></input>Aquí está mi JS (en la misma vista):
$(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; } });La pregunta es: lo que sea que esté insertando el código de barras correcto como 'VIN00001' o un código de barras incorrecto o no insertando ningún texto y presionando enter, siempre obtiene datos con la cadena '0' y siempre recibe la alerta 'VIN disponible'. no se donde esta el problema Por favor, ayúdame.
está enviando datos a través de Ajax, y los datos que está enviando son { Vin : whatever } , por lo que para obtener esto en su función check_av_vin() necesita:
$vin = $this->input->post('Vin'); en lugar de $vin = $this->input->post('f1');
Tiene un nombre de variable incorrecto en su código.
en la función check_av_vin() que usaste
$this->input->post('f1');aunque en forma el nombre de entrada es f1, cuando envía su solicitud ajax pone
data: {Vin : bc},simplemente poner lo siguiente resolverá su problema.
$this->input->post('Vin');