угловой $ ресурс с jsonp не работает

У меня возникли проблемы со следующим кодом:

angular.module('offerServices', ['ngResource'])
    .factory('Offer', function ($resource) {

        return $resource('url/offers', { callback: 'JSON_CALLBACK' },
            {
                query: { method: 'JSONP' }
            }
        );                   

    })
    .factory('Trustyou', function ($resource) {
            return $resource('https://api.trustyou.com/hotels/:id/seal.json', {},
                {
                    query: { method: 'JSONP' }
                }
            );
    });

вызов Offer.query ({}, function () {}); в моем контроллере работает без проблем. но эта часть не работает

       var trustYouData = Trustyou.query({ id: 'd8421e79-99f0-41b2-8d6e-9cfd62a9776b' }, function (data) {
            console.log(data);
        });

это всегда возвращает ошибку 400: "

Ошибка сети: 400 неверных запросов -https://api.trustyou.com/hotels/d8421e79-99f0-41b2-8d6e-9cfd62a9776b/seal.json?callback=angular.callbacks._1"

когда я изменяю свой код и использую jQuerys.getJSON, я неу меня нет проблем:

 $.getJSON("https://api.trustyou.com/hotels/d8421e79-99f0-41b2-8d6e-9cfd62a9776b/seal.json?callback=?", function (data) {
            console.log(data);                           
        });

Почему метод jQuery работает, но реализация angulars $ resource в этом случае возвращает ошибку?

 mawo09 нояб. 2012 г., 09:55
да я'мы тоже пробовали $ http.get, и формат был тот же ...
 Aziz Alfoudari08 нояб. 2012 г., 23:36
Ты пыталсяGET вместоJSONP? Кроме того, во время публикации вопроса формат был таким же, как текущий ответ URL?

Ответы на вопрос(2)

что добавлю реальное решение этой проблемы. Это рабочее решение.

Вот код

var symbol = 'NFLX';
var url = "http://dev.markitondemand.com/Api/v2/Lookup/jsonp?input="+ symbol +"&callback=JSON_CALLBACK";

$http.jsonp(url)
.success(function(data){
   console.info(data);
}).error(function(data, status) {
   console.info(data);
});

Возвращает

//[{"Symbol":"NFLX","Name":"Netflix Inc","Exchange":"NASDAQ"}]

Нажмите здесь, чтобы перейти по прямой ссылке

Решение Вопроса

некоторые проблемы с функцией обратного вызова на угловой, ямы открываем вопрос в git

https://github.com/angular/angular.js/issues/1551

Имя обратного вызова должно быть "JSONP_CALLBACK» в котором angular превратит имя обратного вызова в callback = angular.callbacks._1

;Какой-то веб-сервис, который не может принять "angular.callbacks._1 "имя обратного вызова.

решение :

var stock_hack

function stock_search(data) {
    stock_hack = data;
 }


var stock_hack

function stock_search(data) {
    stock_hack = data;
}


function jsonp_example($scope, $http) {

    $scope.doRequest = function() {
        $http({
            method: "JSONP",
            params: {
                input: "GM",
                callback: "stock_search"
            },
            url: "http://dev.markitondemand.com/Api/Lookup/jsonp",
            isArray: true
        }).success(function(data, status) {
/*
                 *Never Goes HERE !!
                 */


        }).error(function(data, status) {

/*
                 * FREAKING HACK !!!!
                 */
            console.info("goes here")
            console.info(stock_hack)

        });
    };


}​

Моя скрипкаhttp://jsfiddle.net/pMGgR/

Дело в том, что вы должны вызвать другую функцию javascript, чтобы получить JSON-ответ.

Надеюсь это поможет

 JeffryHouser22 февр. 2014 г., 19:56
Я неЯ не понимаю, почему в коде этого ответа дважды определены функция stock_hack и функция stock_search (). Это опечатка?
 eeadev29 дек. 2015 г., 11:54
@TodiAdiatmo, как сказал Джеффри Хаузер, я неЯ не понимаю, почему в коде этого ответа дважды определены функция stock_hack и функция stock_search (). Это опечатка?
 mawo12 нояб. 2012 г., 10:58
Спасибо @ Тоди! Вы'прав, видимо веб-сервис ям использование не совместимо с угловымобработчик обратного вызоваОбратный вызов = angular.callbacks._1', Ваше решение отлично работает сейчас! Надеюсь, эта проблема будет исправлена в ближайшее время! +1

Ваш ответ на вопрос