1. 程式人生 > >angular 的http請求回撥(success 和 error)

angular 的http請求回撥(success 和 error)

前面有文章寫過angular的$http請求的簡單書寫和使用。
回顧一下:

var Server = angular.module("Server", []);

Server.service("Api", ["$http", function ($http) {
		return {
			getTest : function (params, callback) {
		            $http({
		                url: 'www.baidu.com?name=xxx&passwd=xxx',
		                method: 'GET'
		            }).success(callback);
		        },
		        postTest : function (data, callback) {
		            $http({
		                url: 'www.baidu.com',
		                data: data,
		                method: 'POST'
		            }).success(callback);
		}
}]);

var App = angular.module("App", [ "Server"]);
App.controller('Ctrl', ['$scope', 'Api',
    function($scope, Api) {
    		Api.getTest("?name=xxx&passwd=xxx", function(res){
    			//res為返回值	
				alert("請求成功!")
			});
			Api.postTest({name: xxx, passwd: xxx}, function(res){
    			//res為返回值	
				alert("請求成功!")
			});
    }]);

這裡以GET和POST請求為例。首先我們需要在APP中注入Server這個模組,才能使用裡面的service服務Api,如上程式碼所示,注入Server之後我們就可以在控制器Ctl裡面注入Api服務,然後使用我們之前定義好的介面。

  1. GET請求中params 代表了?之後的引數,即 params == ‘?name=xxx&passwd=xxx’,這樣就可以通過傳參的方式把引數加入到地址上,callback是請求成功後的回撥,是個function,我們可以在裡面打印出請求成功的返回值。
  2. POST請求中data代表請求引數,傳入之後直接請求即可,其他跟get請求類似。

error

還有一點需要說的是http請求有時候會失敗,當我們http請求失敗的時候,將不會再呼叫success回撥函式,而是會進入error回撥,下面我就寫一下http請求的success和error同時存在的寫法。


var Server = angular.module("Server", []);

Server.service("Api", ["$http", function ($http) {
		return {
				getTest : function (params, successCallback, errorCallback) {
		            $http({
		                url: 'www.baidu.com?name=xxx&passwd=xxx',
		                method: 'GET'
		            }).then(successCallback, errorCallback);
		        }
}]);

var App = angular.module("App", [ "Server"]);
App.controller('Ctrl', ['$scope', 'Api',
    function($scope, Api) {
    		Api.getTest("?name=xxx&passwd=xxx", function(res){
    			//res為返回值	
				alert("請求成功!")
			}, function(res){
    			//res為返回值	
				alert("請求失敗!")
			});
    }]);

用法幾乎一樣,只不過把success(callback)改成了then(callback1, callback2).然後在呼叫的時候再加入一個function即可。

最簡單的get寫法

$http({
          url: 'www.baidu.com?name=xxx&passwd=xxx',
          method: 'GET'
      }).success(callback);