2014-09-27 2 views
0

Извините за то, что повторил вопрос по этой проблеме, но я действительно пытался найти решение, но я не смог его найти. Поэтому я использую угловой запрос $ http.get xhr для извлечения данных из общедоступного api. У меня есть следующий код

$http.get('http://www.carqueryapi.com/api/0.3/?callback=?&cmd=getMakes&year=2000&sold_in_us=1') 
    .success(function(d){ console.log(d); }) 
    .error(function(d){ console.log("nope"); 
}); 

это возвращается в консоли:

XMLHttpRequest cannot load http://www.carqueryapi.com/api/0.3/?callback=?&cmd=getMakes&year=2009. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'blah-my-localhost-blah' is therefore not allowed access. 

Однако если метод пользователь JQuery getJson это работает просто отлично:

$.getJSON("http://www.carqueryapi.com/api/0.3/?callback=?", {cmd:"getMakes", year:"2009"},      
    function(data) { 
    console.log(data); 
    }); 

Так, очевидно, я могу настроить Угловой отправить правильный запрос, поскольку jQuery работает нормально?

Благодарим за отзыв.

+0

Jquery getJSON использует JSONP, поскольку параметр обратного вызова существует в URL – danronmoon

+0

Угловая не использует '' для? обратный вызов, как делает jQuery ... читать документы для правильной строки обратного вызова и использовать '$ http.jsonp' https://docs.angularjs.org/api/ng/service/$http#jsonp – charlietfl

ответ

2

Используйте метод $http.jsonp сделать запрос JSONP вместе с JSON_CALLBACK как имя обратного вызова:

$http.jsonp('http://www.carqueryapi.com/api/0.3/?callback=JSON_CALLBACK&cmd=getMakes&year=2000&sold_in_us=1') 
    .success(function(d){ console.log(d); }) 
    .error(function(d){ console.log("nope"); }); 
+0

Что делает этот странный обратный вызов = Параметр JSON_CALLBACK'? Некоторое объяснение было бы оценено. – scaryguy