Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   виджет autocomplete() (https://javascript.ru/forum/jquery/51216-vidzhet-autocomplete.html)

aj-nik 28.10.2014 21:07

виджет autocomplete()
 
Не работает виджет autocomplete. ответ на запрос с сервера приходит (проверял в консоли) такого вида в формате json [{"name":"название","local":призна к принадлежности,"countryCode":20},{"n ame ........]. В выпадающем списке надо вывести только NAME. Может сначала надо обработать JSON.parse. Подскажите, кто знает. Пожалуйста.
$( "#autocomplete" ).autocomplete({
source: function(request, response) {
$.ajax({
       url: "https://discovery.gdbilet.ru/Rzhd/Train/SearchStation",
   dataType: "jsonp",
      data: {
        limit: 10, 
                q: request.term 
      },
      success: function(data) {
        response($.map(data, function(item) {
          return {
            value: item.name,
     
          }
        }));
      }
    });
  },
});

рони 28.10.2014 21:14

aj-nik,
14 строка
label: item.name

aj-nik 28.10.2014 21:19

пробовал, не работает.

рони 28.10.2014 22:25

aj-nik,
и dataType в порядке jsonp

aj-nik 29.10.2014 09:52

ответ с сервера приходит. Если в dataType установить json вместо jsonp, то ответа нет.

рони 29.10.2014 10:03

aj-nik, версия ниже проверена в работе
<!doctype html>
<html lang="en">
<head>
   <meta charset="utf-8">
  <title>autocomplete demo</title>
  <link rel="stylesheet" href="http://code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.css">
<script src="http://code.jquery.com/jquery-1.10.2.js"></script>
  <script src="http://code.jquery.com/ui/1.11.2/jquery-ui.js"></script>

</head>

<body>
<label for="autocomplete">Select: </label>
<input id="autocomplete">
<script>
	$("#autocomplete").autocomplete(
	  {
	  source: function(request, response) {
	      $.getJSON("https://discovery.gdbilet.ru/Rzhd/Train/SearchStation",
	        {
	        limit: 10,
	        q: request.term
	        }
	      )
	      .done(function(data)
	        {
	          response($.map
	            (data, function(item)
	              {
	                return {
	                value: item.name,
	                label: item.name
	                }
	              }
	            )
	          );
	        }
	      );
	    },
	  minLength: 2,
	  cache: false
	  }
	);
</script>
</body>
</html>

aj-nik 29.10.2014 14:40

Рони, спасибо.

aj-nik 29.10.2014 15:10

Я рано обрадовался, запустил скрипт, а он не работает. Копирую 1-1. Ни в песочнице ни на сайте.

рони 29.10.2014 16:08

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

aj-nik 31.10.2014 21:47

А безопасность где надо настраивать?


Часовой пояс GMT +3, время: 04:06.