IE выдает «ОШИБКА» и «Отказано в доступе» для запроса AJAX - PullRequest
0 голосов
/ 06 февраля 2012

У меня есть этот скрипт, который делает вызов AJAX (JSONP)

  $("#searchbox").autocomplete({ 


      source: function(request, response) {

        $.ajax({

          url: 'http://query.yahooapis.com/v1/public/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 ); 
    }



    });

У меня есть Google, и выясняется, что это проблема безопасности. Потому что запрос (выход) из другого домена (который является Bing). Я перепробовал много вещей, но безуспешно. Это мой doctype и так далее:

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<link href="desktop.css" media="screen" rel="stylesheet" type="text/css" />
<link href='http://fonts.googleapis.com/css?family=Asap' rel='stylesheet' type='text/css'>
<link class="jsbin" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/base/jquery-ui.css" rel="stylesheet" type="text/css" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js" type="text/javascript"></script>
 <script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/jquery-ui.min.js"></script>
<meta charset=utf-8 />
 <script src="livesearch.js" type="text/javascript"></script>
 <link href='http://fonts.googleapis.com/css?family=Loved+by+the+King' rel='stylesheet' type='text/css'>

    </head>

От нее нет ничего, кроме простого HTML.

Ответы [ 2 ]

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

Если этот сервис не поддерживает jsonp, вы должны сделать это:

  1. Сделайте ajax-вызов php-файла на вашем сервере.
  2. В вашем php-файле вы используете cURL с оригинальным jsonp заявлением, которое вы опубликовали в своем первом посте
  3. Отформатируйте результаты запроса и выведите его, чтобы JavaScript мог получить к нему доступ
  4. Готово!
0 голосов
/ 06 февраля 2012

XMLHttpRequests не разрешено делать междоменные запросы из-за той же политики происхождения , используемой веб-браузерами.Вместо этого используйте JSONP.

...