Ressource angulaire $ avec jsonp ne fonctionne pas

J'ai des problèmes avec le code suivant:

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' } } ); }); 

Appelant Offer.query ({}, function () {}); Dans mon contrôleur fonctionne sans aucun problème. Mais cette partie ne fonctionne pas:

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

Cela renvoie toujours une erreur 400:

"NetworkError: 400 mauvaise demande – https://api.trustyou.com/hotels/d8421e79-99f0-41b2-8d6e-9cfd62a9776b/seal.json?callback=angular.callbacks._1 "

Lorsque je change mon code et que j'utilise jQuerys.getJSON, je n'ai aucun problème:

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

Pourquoi la méthode jQuery fonctionne-t-elle, mais les angulaires $ l'implémentation des ressources renvoie une erreur dans ce cas?

Il y a un problème avec la fonction callback sur angular, j'ai ouvert un problème dans git

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

Le nom de rappel doit être "JSONP_CALLBACK" dans lequel angulaire va transformer le nom de rappel en callback = angular.callbacks._1

Il existe un service Web Web qui ne peut pas accepter "angular.callbacks._1" nom de rappel.

Solution :

 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) }); }; }​ 

Mon violon http://jsfiddle.net/pMGgR/

Le but est que vous devez appeler une autre fonction javascript pour obtenir votre réponse de json.

J'espère que cette aide

Je pensais ajouter une solution réelle à ce problème. C'est une solution de travail.

Voici le code

 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); }); 

Résultats

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

Cliquez ici pour accéder au lien direct