Ошибка источника управления доступом при вызове пользовательского API поиска Google через jQuery

#javascript #jquery #ajax #get #google-search-api

#javascript #jquery #ajax #получить #google-search-api

Вопрос:

Я пытаюсь вызвать API пользовательского поиска Google с помощью jQuery и получаю сообщение об ошибке access-control-origin. Это работает:

 <script>
function hndlr(response) {
    console.log(response);
    for (var i = 0; i < response.items.length; i  ) {
        var item = response.items[i];
        $('#content').append(item.htmlTitle   "<br/>");
    }
}
</script>
<script src="https://www.googleapis.com/customsearch/v1?key=AIzaSyABvGyx3nwDJJtbaRe2_UZhakVSpcxfebUamp;cx=017576662512468239146:omuauf_lfveamp;q=perlin noiseamp;callback=hndlr"></script>
 

но если я попытаюсь ввести jquery, это не сработает:

 var url = "https://www.googleapis.com/customsearch/v1?key=[MY_KEY]amp;q=perlin noiseamp;callback=hndlr";

$.ajax({
    url: url,
    dataType: 'json',
    success: function(data){
    console.log('data:'   data);
}
 

или

 $.get(url, function(data) {
    console.log(data)
});
 

Ответ №1:

Вы выполняете междоменный запрос, поэтому вам нужно использовать JSONP.

http://davidwalsh.name/jsonp

Я рекомендую использовать $.getJSON

Вы бы хотели установить четкий обратный вызов, чтобы этот JSONP не вызывал функцию

Комментарии:

1. Спасибо — да — по какой-то причине getJSON не работает ($.getJSON(url);)

Ответ №2:

Похоже, это сработало:

 $.ajax({
    type: 'GET',
    url: url,
    dataType: 'jsonp'
});