angularjs和$http请求

36 浏览
0 Comments

angularjs和$http请求

你好,我是AngularJS的新手,正在尝试从我的服务器获取JSON数据。当服务被执行时,我在Fiddler中看到了一个明确的响应。但是成功或错误函数没有被执行,所以服务返回一个空数组。

var app = angular.module('imageApp', []);

app.service('imageService', function ($http) {

var imageModels = [];

this.Images = function (url) {

$http({ method: 'GET', url: url }).then(function (response) {

imageModels = response.data;

}).catch(function (error) {

imageModels = error.data || "请求失败";

});

return imageModels;

};

});

app.controller('ImageController', function (imageService, $scope) {

$scope.fetch = function (url) {

$scope.url = url;

$scope.ImageModels = imageService.Images($scope.url);

};

});

0
0 Comments

在使用AngularJS的$http服务发送请求时,可能会遇到异步返回结果的问题。由于$http返回结果是异步的,所以在调用return imageModels时,success()或error()回调函数可能还没有执行。因此,我们需要等待$http创建的promise对象被解析,可以在控制器中使用then()方法来解决这个问题。

具体的解决方法可以参考BD在stackoverflow上给出的解决方案:https://stackoverflow.com/a/12513509/215945

0
0 Comments

问题的原因是原先的服务没有返回一个promise对象,导致无法在控制器中使用.then()和.catch()方法来处理成功和失败的回调函数。解决方法是在服务中添加$q来创建一个promise对象,并在成功和失败的回调函数中使用$q.resolve()和$q.reject()来处理返回的数据。另外,也可以使用第三方的angular模块来处理$http请求,如上面提到的angular-http-assist模块。

0