Запрос автозаполнения AJAX не разрешен в IE - PullRequest
1 голос
/ 06 февраля 2012

Следующий код вызывает у меня проблемы в IE. IE сообщает мне, что существует угроза безопасности, и запрещает работу кода.

$("#searchbox").autocomplete({ 
  source: function(request, response) {
    $.ajax({
      url: 'http://query.yahooapis.com/v1/public/streaming/yql',
      dataType: 'JSONP',
      data: {
        format: 'json',
        q: 'select * from xml where url="http://google.com/complete/search?hl=nl&output=toolbar&q=' + encodeURIComponent(request.term) + '"'
      },
      success: function(data) {
        if (typeof data == 'string') data = $.parseJSON(data);
        response(
          $.map(data.query.results.toplevel.CompleteSuggestion, function(item) {
            return { label: item.suggestion.data, value: item.suggestion.data };
          })
        );
      }
    });
  },
  select: function(e, ui){
  },
  open: function(){
    doSearch($('.ui-autocomplete li:first-child a').text(), true, false);
    $(".ui-autocomplete :first-child a").addClass("ui-state-hover");
    $("#searchbox").focus();
    return false;
  },
  select: function(e, ui){
    $("#searchbox").autocomplete('search', ui.item.value);
  },
  close: function (event, ui) {
    val = $("#searchbox").val();
    $("#searchbox").autocomplete( "search", val ); 
  }
});

Я провел некоторое расследование, и оказалось, что эта строка создает мне проблему: url: 'http://query.yahooapis.com/v1/public/streaming/yql',

Так что мне было интересно, что я могу заменить или что изменить, чтобы это работало. Вот живая версия: JsBin

1 Ответ

2 голосов
/ 06 февраля 2012

Похоже, что это может быть междоменный запрос, что, на мой взгляд, является проблемой.

Вам нужно будет использовать вызовы XDR (не поддерживаются во всех версиях IE), ИЛИ вам нужно будет использоватьобратный прокси с вашего хоста ... Смотрите эту статью: http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx

...