Название говорит все.Как связать предложения Typeahead.js с перекрестным источником данных?
Я попытался с помощью удаленного источника, на URL (который находится на другом домене) и получил обратно следующее сообщение:
XMLHttpRequest cannot load http://www..../argument?callback=urlHandler. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:5000' is therefore not allowed access.
Соответствующий код
var films = new Bloodhound({
datumTokenizer: function(d) { return Bloodhound.tokenizers.whitespace(d.value); },
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {url: "http://www..../%QUERY?callback=urlHandler",
ajax: $.ajax({type:'GET',dataType:'jsonp',jsonp:'jsonp'})
}
});
Обновление: похоже, проблема связана с проблемами CORS. И значениеобъекта данных объекта настроек, установленное на jsonp
, не соблюдается. Комментарии ниже содержат больше информации.
EDIT: Я нашел исправление! Теперь возникает вопрос, почему это сработало.
Итак, когда я изменил URL-адрес на http://www....?callback=?
, который фактически заставил его загрузить ответ GET-вызова как объекта JSONP. Не должны ли атрибуты AJAX dataType
и jsonp
?
Можете ли вы опубликовать скрипт для демонстрации вашей проблемы? – jacquard
Если ваши данные меняются локально, вам необходимо уничтожить и повторно инициализировать объект typeahead (https://github.com/twitter/typeahead.js/blob/master/ док/jquery_typeahead.md # jquerytypeaheaddestroy). Если он изменяется на сервере, просто используйте источник данных «remote:». –
@NitzanShaked Не могли бы вы еще раз взглянуть на вопрос и на тело? Я отредактировал его, столкнувшись с проблемами с помощью пульта. – Louis93