2016-02-28 3 views
0

Я хотел добавить функцию typeahead, следуя this. Ниже приводится порядок кодирования. Когда я проверяю control.log, я ничего не вижу. Кажется, функция typeahead никогда не вызвана, поскольку я тестировал php поиска данных, и это действительно работает. Может ли кто-нибудь указать мне, что я сделал не так? Благодарю.Невозможно вызвать функцию typeahead

<html> 
 

 
<head> 
 
    <meta chatset="utf-8"> 
 
    <title></title> 
 
    <link href="css/bootstrap.css" rel="stylesheet"> 
 
</head> 
 

 
<body> 
 
    <div class="well"> 
 
    <input type="text" class="span3" id="typeahead" data-provide="typeahead"> 
 
    </div> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
    <script src="js/bootstrap.min.js"></script> 
 
    <script src="js/typeahead.bundle.min.js"></script> 
 
    <script> 
 
    $(function() { 
 
     $("#typeahead").typeahead({ 
 
     source: function(query, process) { 
 
      $.ajax({ 
 
      url: 'source.php', 
 
      type: 'POST', 
 
      data: 'query=' + query, 
 
      dataType: 'JSON', 
 
      async: true, 
 
      success: function(data) { 
 
       control.log(data); 
 
      } 
 
      }); 
 
     } 
 
     }); 
 
    }); 
 
    </script> 
 
</body> 
 

 
</html>

<?php 
 
    if (isset($_POST['query'])) { 
 
    $db_host="localhost"; 
 
    $db_username="myuser"; 
 
    $db_pass="mypassword"; 
 
    $db_name="mydb"; 
 
    mysql_connect("$db_host", "$db_username", "$db_pass") or die(mysql_error()); mysql_select_db("$db_name") 
 
     or die ("Database not found"); 
 
    $query=$_POST['query']; 
 
    $sql=mysql_query("SELECT prvname FROM prv WHERE prvname LIKE '%{$query}%'") 
 
     or die(mysql_error()); 
 
    $array=array(); 
 
    while ($row=mysql_fetch_assoc($sql)) { 
 
     $array[]=$row['prvname']; 
 
    } 
 
    echo json_encode($array); 
 
    } 
 
?>

+0

Есть разбросанные пространства по всему вашему коду, это то, что здесь или в вашем фактическом коде? например '$ _POST',' m ysql_query' и т. Д. Составляет ли JS запрос на код PHP? – chris85

+0

Разбросанные пространства находятся только на коде, который я опубликовал, когда я пытался их убрать. Я не думаю, что JS был вызван, потому что я добавил предупреждение сразу после строки «$ (« # typeahead »). Typeahead ({', и он не всплывал. –

ответ

0

Функция машинописной два аргумента, так что, если вам не нужно проходить любой вариант машинописных вы можете передать нуль в качестве первого аргумента:

$(function() { 
    $("#typeahead").typeahead(null, { 
    source: function(query, process) { 
     $.ajax({ 
     url: 'source.php', 
     type: 'POST', 
     data: 'query=' + query, 
     dataType: 'JSON', 
     async: true, 
     success: function(data) { 
      console.log(data); 
     } 
     }); 
    } 
    }); 
}); 
+0

Thx. Я добавил null в качестве первого аргумента и JS, похоже, срабатывает, но теперь я получил сообщение «Uncaught ReferenceError: control не определено» в строке control.log (data). В соответствии с демонстрацией я должен ожидать увидеть данные, возвращенные из поискового PHP. –

+0

Я отредактировал исходный код - console.log вместо control.log :) –

+0

Разработчик Chrome показал 2 ошибки. Я расширил его, и он показал (анонимный fuction) @ jquery.min.js: 4. В чем проблема? –

Смежные вопросы