Twitter Typeahead: Как отобразить сообщение «Результат не найден» в DIV? - PullRequest
0 голосов
/ 29 января 2020

Я использую плагин Twitter TypeAhead 0.11 , и я хотел бы отобразить сообщение " Результаты не найдены " в DIV, однако код, который я вставляю в соответствии с документация не работает. Я нашел несколько похожих вопросов и не нашел правильного способа решить эту проблему:

  1. twitter bootstrap typeahead ajax пример
  2. jQuery Ajax обработка ошибок, показ пользовательских сообщений об исключениях
  3. Twitter Typeahead с шаблоном всегда возвращает только 1 строку данных
  4. typeahead пустой шаблон не работает

Параметр, который я пытаюсь использовать, это " templates {empty: ". Ниже приведены typeahead и ajax код, который я использую в моем проекте:

HTML код:

<label>Search Country</label>
   <input type="text" name="country" id="country" class="form-control input-lg" autocomplete="off" placeholder="Type Country Name" />
<div id="message"></div>

TypeAhead и Ajax код:

<script>
$(document).ready(function(){

 $('#country').typeahead({
  source: function(query, result)
  {
   $.ajax({
    url:"fetch.php",
    method:"POST",
    data:{query:query},
    dataType:"json",
    success:function(data)
    {
     result($.map(data, function(item){
      return item;
     }));
    }

   })
  },

  templates: {
        empty: function(data){

          $('#message').text('Country not found');
        }},

 });

});
</script>

И, наконец, php код выборки. php, который возвращает результаты в Ajax:

<?php
//fetch.php
$connect = mysqli_connect("localhost", "root", "", "testing");
$request = ($connect, $_POST["query"]);
$query = "
 SELECT * FROM countries WHERE name LIKE '%".$request."%'
";

$result = mysqli_query($connect, $query);

$data = array();

if(mysqli_num_rows($result) > 0)
{
 while($row = mysqli_fetch_assoc($result))
 {
  $data[] = $row["name"];
 }
 echo json_encode($data);
}

?>

Весь код выше работает нормально, но когда я вставил приведенный ниже код после параметра typeahead " source ", ничего не происходит, когда я набираю что-то не так внутри ввода " # country "

templates: {
        empty: function(data){

          $('#message').text('Country not found');
        }},

В этом случае это можно отобразить " Нет результатов Founds " внутри div?

...