Я новичок в 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 доступен». Я не знаю, в чем проблема. Пожалуйста, помогите мне.

1
Fahmi Poetra 31 Мар 2017 в 05:15

2 ответа

Лучший ответ

Вы отправляете данные через Ajax, и вы отправляете данные { Vin : whatever }, поэтому чтобы получить их в своей функции check_av_vin(), вам нужно:
$vin = $this->input->post('Vin'); вместо {{X3 } }

1
Taki 31 Мар 2017 в 02:22

В вашем коде неверное имя переменной.

В функции check_av_vin (), которую вы использовали

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

Хотя в форме входное имя f1, когда вы отправляете ваш запрос AJAX вы ставите

data: {Vin : bc},

Просто поставьте следующее, чтобы решить вашу проблему.

$this->input->post('Vin');
1
reza 31 Мар 2017 в 02:23