棱角分明的jsonp工厂不起作用

时间:2013-06-03 22:01:40

标签: angularjs

我有角度的这个工厂,它总是给我一个0错误代码,即使我可以看到它从json原点获取,有人可以帮助我吗?

app.factory('docFactory', function($http) {  
  var docFactory = {      
    async: function(page) {
      var url = 'http://example.com/ProviderRequest?&queryString=searchv2&callback=JSON_CALLBACK';     
        var promise = $http.jsonp(url).error(function (response, status) {
          alert(status);
        }).success(function (response, status) {
          alert(status);
        }).then(function (response, status) {
          return response.data;           
      });
      return promise;
    }};
  return docFactory;
});

2 个答案:

答案 0 :(得分:2)

我自己遇到了这个问题。如果您的JSONP是函数调用或虚假(nullfalseundefined),您将遇到此行为。请查看AngularJS HTTP后端的this代码以获取更多信息(第41-54行是相关的)。

如果要返回一个函数,则可能只需要在调用后返回true或其他内容。

编辑:查看您的plunker后,您的JSONP响应似乎没有调用回调方法。响应应为angular.callbacks._0( { ... } );,其中{ ... }是您的对象,angular.callbacks._0是请求中callback查询参数的值。

答案 1 :(得分:-1)

上面的例子几乎是正确的。只需将callback参数更改为

即可
jsoncallback=JSON_CALLBACK

你最后应该有类似的东西

$http.jsonp(url + '?jsoncallback=JSON_CALLBACK').success(function(data) {
     console.log(data);
})