【问题标题】:can't fetch callback response in angular js无法在 Angular js 中获取回调响应
【发布时间】:2018-09-07 23:38:12
【问题描述】:

我正在开发 angularjs 服务。我从我的 API 端点收到了一些回调响应。我正在使用 Angular 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

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

【问题讨论】:

  • 你能展示定义projectInstance的代码部分吗?当您调用 projectInstance.jsonpCallback 时,它似乎不在范围内(或尚未填充)。
  • 另外,你不需要使用deferred你是如何使用它的。 jsonp() 已经返回了一个承诺。

标签: javascript jquery angularjs callback jsonp


【解决方案1】:

$http 服务已经返回了一个承诺。用你自己的 $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);
});

【讨论】:

  • 我仍然得到 console.logUncaught TypeError: Cannot read property 'jsonpCallback' of null
  • @user3760261 你在控制器中注入了 $http 吗?
  • 是的,我在控制器中注入了 $http。在该服务方法中,我使用了 jsonpCallbackParam: 'callback' ** 但出现控制台错误,例如 **Uncaught TypeError: Cannot read property 'callback' of null 。无论我给 jsonpCallbackParams 什么值,它都会显示控制台 .log 错误,例如无法读取属性。你能帮我解决这个问题吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多