2013-06-19 4 views
0

У меня есть некоторые проблемы, которые я не мог понять. Я написал функцию, чтобы получить систему автозаполнения, используя Type-ahead.Bootstrap Typeahead, работающий на локальном, но не на производственном сервере

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

Вот мой опережающего синтаксис:

<script> 
     $(document).ready(function(){ 
      $('#q').typeahead({ 
       source: function(query, process){ 
        $.ajax({ 
         url:'autosearch.php', 
         type:'POST', 
         data:'query=' + query, 
         dataType: 'JSON', 
         async: true, 
         success:function(data){ 
          process(data); 
         } 
        }); 
       } 
      }) 
     }); 
     </script> 

Это получить значение из входного текста (HTML ниже)

<form method="GET" action="search.php" class="form-inline pull-right"> 
         <input name="q" id="q" class="span5" type="text" placeholder="search" data-provide="typeahead" autocomplete="off"> 
         <button type="submit" class="btn btn-primary"> <i class="icon-search icon-white"></i></button> 
        </form> 

, что случилось с этой функцией?

благодаря

UPDATE

После получения результата от поджигатель, это показывает, что произошла ошибка в PHP файл

Примечание: Undefined индекс: • в C: \ XAMPP \ HTDOCS \ KBase \ panel \ autosearch.php в строке 5

php-код такой:

<?php 
require_once "configuration.php"; 
$q = mysql_real_escape_string(strtolower($_GET['q'])); 

$sql = "SELECT DISTINCT title as title FROM ** WHERE title LIKE '%" . $q ."%'"; 
$rsd = mysql_query($sql); 
$cname = array(); 

while ($rs = mysql_fetch_assoc($rsd)) 
{ 
    $cname[] = $rs['title']; 
} 
echo json_encode($cname); 
?> 

ответ

0

autosearch.php выслан запрос POST, а не GET. Он также отправляет имя переменной как query, а не q.

Как до головки, вы можете упростить Ajax-запрос:

$(document).ready(function(){ 
    $('#q').typeahead({ 
     source: function(query, process) { 
      $.ajax({ 
       url:'autosearch.php', 
       type:'POST', // <- defaults to GET (desired by your PHP) 
       data:'query=' + query, // <- change to {'q': query} for your PHP 
       dataType: 'JSON', // <- 'json' LOWERCASE 
       async: true, // <- defaults to true anyway 
       success: process // <- same function signature 
     } 
    }) 
}); 
+0

да, спасибо pickypg, я должен переименовать запрос Jquery только д. я просто добавляю некоторый isset из GET, пытаюсь изменить его на метод POST – randytan

+0

Если вы хотите, чтобы он был запросом 'POST', измените значение' $ _GET' на '$ _POST' и оставьте' '' '' '' POST' 'в вызове Ajax. – pickypg

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