无法在角度js中获取回调响应

时间:2018-03-29 05:43:53

标签: javascript jquery angularjs callback jsonp

我正在研究angularjs服务。我从API端点获得了一些回调响应。我正在使用角度jsonP来获取回调响应。我已在下面附上我的回复

projectInstance.jsonpCallback("getActiveProduct",{"totalRecords":null,"projectSnapShot":[{"projectId":"333333","projectNumber":"123456","projectStatus":"Active"}]})

这是我的服务功能

getActiveProduct: function() {
  var deferred = $q.defer();  
  var url ="myserver/getproject.json"

  $http.jsonp(url, {
    jsonpCallbackParam: 'callback',
    data:''
  }).then(function(data){
    deferred.resolve(data.data);
  },function(error){
    console.log(error);
    return deferred.reject(err);
  });
  return deferred.promise;
}

使用这些jsonp方法我尝试获取上面的响应。但是它会抛出下面的控制台错误

Uncaught ReferenceError: projectInstance is not defined

如何获取我的回复。有人可以帮助我解决这些问题吗?

1 个答案:

答案 0 :(得分:0)

$ http服务已经返回一个promise。使用自己的$ q.defer管理承诺是不好的。你可以摆脱$ q并只返回数据。

您的服务也应该返回$ http。

创建的承诺
function getActiveProduct() {
  var url ="myserver/getproject.json"

  return $http.jsonp(url, {
    jsonpCallbackParam: 'callback',
    data:''
  }).then(function(data){
    return data.data;
  },function(error){
    console.log(error);
    return err;
  });
}

您可以这样方式调用此服务:

myService.getActiveProduct().then(function(res) {
  console.log(res);
});