Как реализовать автозаполнение CloudSearch Amazon и Jquery?

У меня были проблемы с получением данных с помощью автозаполнения плагина Jquery. это мой пример:

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>jQuery UI Autocomplete - Remote JSONP datasource</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>
  <!-- <link rel="stylesheet" href="/resources/demos/style.css"> -->
  <style>
  .ui-autocomplete-loading {
    background: white url("images/ui-anim_basic_16x16.gif") right center no-repeat;
  }
  #city { width: 25em; }
  </style>
  <script>
  $(function() {
    function log( message ) {
      $( "<div>" ).text( message ).prependTo( "#log" );
      $( "#log" ).scrollTop( 0 );
    }

    $( "#city" ).autocomplete({
      source: function( request, response ) {
        //$.getJSON('/http://search-profuturo-iiwjjl6diqb7gluv2inqunahea.us-west-2.cloudsearch.amazonaws.com/2013-01-01/search?', { q: request.term }, function(data){ response(data); });


        $.ajax({
          url: "http://search-DOMAIN-iiwjjl6diqb7gluv2inqunahea.us-west-2.cloudsearch.amazonaws.com/2013-01-01/search?",
          dataType: "jsonp",
          data: {
            q: request.term
          },
          success: function( data ) {
            response( data );
          }
        });

      },
      minLength: 3,
      select: function( event, ui ) {
        log( ui.item ?
          "Selected: " + ui.item.label :
          "Nothing selected, input was " + this.value);
      },
      open: function() {
        $( this ).removeClass( "ui-corner-all" ).addClass( "ui-corner-top" );
      },
      close: function() {
        $( this ).removeClass( "ui-corner-top" ).addClass( "ui-corner-all" );
      }
    });
  });
  </script>
</head>
<body>

<div class="ui-widget">
  <label for="city">Your city: </label>
  <input id="city">
</div>

<div class="ui-widget" style="margin-top:2em; font-family:Arial">
  Result:
  <div id="log" style="height: 200px; width: 300px; overflow: auto;" class="ui-widget-content"></div>
</div>


</body>
</html>

И это ответ:

http://search-DOMAIN-iiwjjl6diqb7gluv2inqunahea.us-west-2.cloudsearch.amazonaws.com/2013-01-01/search?&callback=jQuery11020041068303398787975_1421364823901&q=starwars&_=1421364823902

Это добавляет всю строку:

&callback=jQuery11020041068303398787975_1421364823901

Это ошибка, эта строка не нужна.

Мне нужен URL таким образом:

http://search-DOMAIN-iiwjjl6diqb7gluv2inqunahea.us-west-2.cloudsearch.amazonaws.com/2013-01-01/search?q=starwars

и мне нужен ответ JSON.

Как я могу сделать?


person Israel Barba    schedule 15.01.2015    source источник
comment
это правильный URL-адрес запроса? Также вы не должны получать URL-адрес в качестве ответа. Вы должны получить данные JSON обратно.   -  person Rafael    schedule 16.01.2015


Ответы (1)


Попробуйте это

$.ajax({
    url: 'http://search-DOMAIN-iiwjjl6diqb7gluv2inqunahea.us-west-2.cloudsearch.amazonaws.com/2013-01-01/search',
    data: {
      q: 'starwars'
    }
    jsonp : false,
    jsonpCallback: 'jsonCallback',
    cache: 'true',
    dataType: 'jsonp'
});

function jsonCallback(data) {
  console.log(data);
}
person Rafael    schedule 15.01.2015
comment
Я должен добавить версию API /2013-01-01, чтобы работать в соответствии с документами Amazon, я сделал то, что вы сказали, но все еще не работает, я все еще получаю неверный запрос. Спасибо - person Israel Barba; 16.01.2015
comment
вы уверены, что это ваше доменное имя и идентификатор домена? И правильное расположение (запад США)? - person Rafael; 16.01.2015
comment
Я хотел бы помочь вам, но вы не внимательны к обсуждению. - person Rafael; 16.01.2015
comment
URL-адрес правильный, я сделал тест с GET, и все в порядке, я думаю, что проблема в методе ajax, это добавляет обратный вызов в запрос - person Israel Barba; 16.01.2015
comment
согласно документу ajax: jsonp: загружается в блок JSON с использованием JSONP. Добавляет дополнительный ?callback=? в конец вашего URL, чтобы указать обратный вызов. Отключает кэширование путем добавления параметра строки запроса _=[TIMESTAMP] к URL-адресу, если для параметра кэширования не задано значение true. api.jquery.com/jquery.ajax - person Israel Barba; 16.01.2015
comment
Вы говорите, что обратный вызов испортил запрос? - person Rafael; 16.01.2015
comment
Да! ответ API: Неизвестный параметр поиска «обратный вызов» - person Israel Barba; 16.01.2015
comment
Почти работает, теперь у меня есть эта ошибка: Uncaught SyntaxError: Unexpected token: - person Israel Barba; 17.01.2015
comment
@IsraelBarba убедитесь, что ваш сервер AWS отправляет обратно "application/json" - person Rafael; 17.01.2015