Есть ли способ отобразить данные в текстовое поле после поиска? Codeigniter Ajax - PullRequest
1 голос
/ 22 марта 2020

Мне нужно выбрать и отобразить идентификатор в текстовом поле после того, как данные правильно извлечены из текстового поля.

Мне нужно просмотреть данные других полей таблицы из текстового поля

Вот мой Просмотр и Ajax

   <div class="form-group">
        <h5>Class Code:</h5>
            <small><li>Only teachers shall give you code</li></small><br>
            <input type="text" id="code" class="form-control col-md-6" placeholder="Enter class code to join" name="code" required />
            <span id="code_result"></span>  
            <input type="text" name="id" id="id" class="form-control col-md-2" />
    </div>

Ajax - поэтому мне нужно получить идентификатор, но для моего кода он не отображает

//Verify
$('#code').on("change keyup paste", function(){
    var code = $('#code').val();  
       if(code != '')  
       {  
            $.ajax({  
                 url:"<?php echo base_url(); ?>students/check_code_avalibility",  
                 method:"POST",  
                 data:{code:code},  
                 success:function(data){  
                      $('#code_result').html(data);  
                      $('input[name=id]').val(data.id); // I need to fetch this data
                 }  
            });  
       }    
});

Контроллер - Здесь я проверяю, данные верны

function check_code_avalibility()  
{  

          if(!$this->student_model->is_code_available($_POST["code"]))  
          {  
               echo '<label class="text-danger"><span class="glyphicon glyphicon-remove"></span> Invalid Code</label>';  
          }  
          else  
          {  
               echo '<label class="text-success"><span class="glyphicon glyphicon-ok"></span> Code Available </label><hr>';  
               echo '<button type="submit" class="btn btn-primary btn-md">Join to Class</button>'; 
          }  

}     

Модель

function is_code_available($code)  
{  
     $this->db->where('code', $code);  
     $query = $this->db->get("groups");  
     if($query->num_rows() > 0)  
     {  
          return true;  
     }  
     else  
     {  
          return false;  
     }  
}  

1 Ответ

1 голос
/ 22 марта 2020

Чтобы достичь того, что вы хотите, вы должны изменить функцию check_code_avalibility, чтобы она возвращала данные, а не выводила html. Когда вы делаете что-то подобное в javascript:

.val(data.id)

, это означает, что вы ожидаете объект, обладающий свойством id. Но ваша PHP функция не возвращает объект. Он возвращает строку (ваш html вывод). Нет id, поэтому вы не можете его использовать.

Если вы хотите вернуть объект для javascript, лучше всего использовать JSON. См. json_encode пример . Таким образом, вместо того, чтобы отображать html в вашей функции, вы должны сохранить это html в массиве под некоторым ключом:

$output['html'] = '<label class="... and so on';

Обратите внимание, что если вы выводите несколько строк, вам нужно объединить их перед добавлением в массив. Внутри вашего javascript этот вывод html теперь будет доступен под data.html (потому что так я назвал ключ массива).

Кроме того, вам нужно добавить нужный идентификатор в этот же массив:

$output['id'] = $this->student_model->id;

Если вы вернете версию этого массива в кодировке JSON, у вас будет html и идентификатор, доступный вам в javascript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...