2013-07-24 3 views
0

У меня есть код для поиска мест. Сервер правильно возвращает данные в формате json, но typeahead не показывает результаты.Bootstrap typeahead не работает с моим следующим кодом

<script type="text/javascript"> 
$(document).ready(function(e) { 
    $('#txt_ser').typeahead({ 
     minLength:1, 
     source: function (query, process) { 
      var places = []; 
      var map = {}; 
      $.ajax({ 
       dataType: "json", 
       url: "<?php echo base_url() . "ajax/ser";?>", 
       data: 'q='+query, 
       type: 'POST', 
       success: function (data) { 
        $.each(data, function(i, place){ 
         map[place.yt_center_state] = place; 
         places.push(place.yt_center_state); 
        }); 
        return process(places); 
       } 
      }) 
     } 
    }); 
}); 
</script> 

Сервер возвращает данные в формате JSON пример показан ниже, когда ключевое слово Пуна набран

0: {yt_center_top_city:pune, yt_center_state:MH} 
1: {yt_center_top_city:pune, yt_center_state:MH} 
2: {yt_center_top_city:pune, yt_center_state:MH} 
3: {yt_center_top_city:pune, yt_center_state:MH} 
+1

есть какая-либо ошибка в консоли? У меня есть некоторые сомнения в синтаксисе '' «' Но я не парень PHP –

+0

Также есть запрос ajax, отправленный на сервер и обратный вызов успеха is geting called –

+0

no нет ошибки Я добавил данные json, которые были возвращены сервером со статусом 200 –

ответ

0

Вы не возвращал результат вашего АЯКС запроса на машинописный source. Эта строка кода:

return process(places); 

внутри success обработчик $.ajax, поэтому он возвращает только places к этой функции.

Вы должны изменить свой код на:

$('#txt_ser').typeahead({ 
    minLength:1, 
    source: function (query, process) { 
     var places = []; 
     var map = {}; 
     return $.ajax({ // <- add return here 
      dataType: "json", 
      url: "<?php echo base_url() . "ajax/ser";?>", 
      data: 'q='+query, 
      type: 'POST', 
      success: function (data) { 
       $.each(data, function(i, place){ 
        map[place.yt_center_state] = place; 
        places.push(place.yt_center_state); 
       }); 
       return process(places); 
      } 
     }); 
    } 
}); 

Надеется, что это помогает

+0

Нет, он не работает после изменения кода также ... Сервер отправляет данные в формате JSON. Эта часть моего сайта действительно вредит мне ... –

+0

Хмм, если вы делаете 'console.log (места);' before' return process (places); ', вы можете увидеть свои ожидаемые« места »? В противном случае я думаю, что цикл foreach имеет проблему. –

+0

console.log показывает результат как ["MH", "MH", "MH", "MH"] –

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