问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

在angularjs中怎样自定义http请求

发布网友 发布时间:2022-04-26 16:18

我来回答

2个回答

懂视网 时间:2022-05-14 20:10

本篇文章详细的介绍了关于angularjs的内置服务$http的介绍。angularjs中的$http有哪些语法,怎么使用都在里面,还有完整的代码都在文章里。现在就让我们一起来看看这篇文章吧

AngularJS 内置服务 $http

AngularJS为我们提供了大量的内置服务,通过这些内置服务就可以快捷的进行一些业务功能流程的自动处理了,如:

$window:用于注入原生JS中的window对象

$document:用于注入原生JS中的document文档对象

$timeout:用于注入封装的原生JS中的setTimeout()函数处理过程

$interval:用于注入封装的原生JS中的setInterval()函数处理过程

$location:用于注入原生JS中的location对象方便对于URL地址等操作

$http:用于注入封装的Ajax操作进行异步数据请求等等

今天我们主要来讲解一下AngularJS内置服务中的 $http。

$http:

$http服务是AngularJS的核心服务之一,这个服务主要封装了XMLHttpRequest对象和JSONP数据访问模式来完成远程服务的数据请求!

常规的语法结构:

$http({
	method:”GET”,/* 请求发送方式 */
	url:”http://......../com” /* 请求地址*/
}).then( /* then()函数表示请求完成之后的操作 */
	function(response) {
		/* 请求成功之后的操作函数 */
  },
  function(response) {
  	/* 请求失败时候的操作函数 */
  }
);

AngularJS为了方便开发人员进行快捷的异步数据请求的处理,提供了一系列的快捷函数方便开发,主要由如下的函数:

l $http.get()

l $http.post()

l $http.jsonp()

l $http.header()

l $http.patch()

l $http.put()

l $http.delete()

$http.get(“url”).then(fn1, fn2);

其实快捷方式,就是简单的封装了$http服务,常规项目开发时,使用较多的是原始的内置服务$http的$http({}).then(fn1, fn2)函数进行异步数据处理。(想看更多就到PHP中文网AngularJS开发手册中学习)

我们来举个简单的小案例来演示一下:

<!DOCTYPE html>
<html ng-app="myApp">
<head>
 <meta charset="UTF-8">
 <title>Title</title>
 <script src="js/lib/AngularJS/angular.min.js"></script>
</head>
<body>
<p class="form" ng-controller="login">
 账号:<input type="text" ng-model="username"><br />
 密码:<input type="text" ng-model="password"><br />
 <button ng-click="loginFn()">登录</button>
</p>
<script>
 var app = angular.module("myApp", []);

 app.controller("login", ["$scope", "$http",
 function($scope, $http) {

  $scope.loginFn = function() {
  // 实现登录
  $http({
   method:"GET",
   url:"服务器地址",
   params:{status:"login",userID:$scope.username, password:$scope.password}
   /*
   如果是get请求,请使用params来传递参数
   如果是Post请求,请使用data来尝试传递参数
   */
  }).then(
   function success(resp) {
   console.log("请求成功", resp);
   if(resp.data) {
    console.log("登录成功,跳转到首页");
   } else {
    console.log("登录失败");
   }
   },
   function error(resp){
   console.log("请求失败");
   }
  );
  }
 }]);
</script>
</body>
</html>


一个简单的登录功能页面。希望可以帮助到大家~

本篇文章到这就结束了(想看更多就到PHP中文网AngularJS使用手册中学习),有问题的可以在下方留言提问。

热心网友 时间:2022-05-14 17:18

我们可以使用内置的$http服务直接同外部进行通信。$http服务只是简单的封装了浏览器原生的XMLHttpRequest对象。

1、链式调用
$http服务是只能接受一个参数的函数,这个参数是一个对象,包含了用来生成HTTP请求的
配置内容。这个函数返回一个promise对象,具有success和error两个方法。

$http({

url:'data.json',

method:'GET'

}).success(function(data,header,config,status){

//响应成功

}).error(function(data,header,config,status){

//处理响应失败

});
2、返回一个promise对象

var promise=$http({

method:'GET',

url:"data.json"

});
由于$http方法返回一个promise对象,我们可以在响应返回时用then方法来处理回调。如果
使用then方法,会得到一个特殊的参数,它代表了相应对象的成功或失败信息,还可以接受两个
可选的函数作为参数。或者可以使用success和error回调代替。

promise.then(function(resp){

//resp是一个响应对象

},function(resp){

//带有错误信息的resp

});
或者这样:

promise.success(function(data,status,config,headers){

//处理成功的响应

});

promise.error(function(data,status,hedaers,config){

//处理失败后的响应

});
then()方法与其他两种方法的主要区别是,它会接收到完整的响应对象,而success()和error()则会对响应对
象进行析构。

3、快捷的get请求

①$http.get('/api/users.json');

get()方法返回HttpPromise对象。

还可以发送比如:delete/head/jsonp/post/put 函数内可接受参数具体参照148页

②以再发送jsonp请求举例说明: 为了发送JSONP请求,其中url必须包含JSON_CALLBACK字样。

jsonp(url,config) 其中config是可选的

var promise=$http.jsonp("/api/users.json?callback=JSON_CALLBACK");

4、也可以将$http当做函数来使用,这时需要传入一个设置对象,用来说明如何构造XHR对象。

$http({

method:'GET',

url:'/api/users.json',

params:{

'username':'tan'

});

其中设置对象可以包含以下主要的键:
①method
可以是:GET/DELETE/HEAD/JSONP/POST/PUT

②url:绝对的或者相对的请求目标
③params(字符串map或者对象)
这个键的值是一个字符串map或对象,会被转换成查询字符串追加在URL后面。如果值不是字符串,会被JSON序列化。
比如这个:

//参数会转为?name=ari的形式
$http({
params:{'name':'ari'}
});

④data(字符串或者对象)
这个对象中包含了将会被当作消息体发送给服务器的数据。通常在发送POST请求时使用。

从AngularJS 1.3开始,它还可以在POST请求里发送二进制数据。要发送一个blob对象,你可以简单地通过使用data参数来传递它。
例如:

var blob=new Blob(['Hello world'],{type:'text/plain'});

$http({

method:'POST',

url:'/',

data:blob

});
4、响应对象

AngularJS传递给then()方法的响应对象包含了四个属性。
◇data
这个数据代表转换过后的响应体(如果定义了转换的话)
◇status
响应的HTTP状态码
◇headers
这个函数是头信息的getter函数,可以接受一个参数,用来获取对应名字值

例如,用如下代码获取X-Auth-ID的值:

$http({

method: 'GET',

url: '/api/users.json'

}).then (resp) {

// 读取X-Auth-ID

resp.headers('X-Auth-ID');

});
◇config
这个对象是用来生成原始请求的完整设置对象。

◇statusText(字符串)
这个字符串是响应的HTTP状态文本。

5、缓存HTTP请求
默认情况下,$http服务不会对请求进行本地缓存。在发送单独的请求时,我们可以通过向$http请求传入一个布尔值或者一个缓存实例来启用缓存。
$http.get('/api/users.json',{ cache: true })
.success(function(data) {})
.error(function(data) {});

第一次发送请求时,$http服务会向/api/users.json发送一个GET请求。第二次发送同一个GET请求时,$http服务会从缓存中取回请求的结果,而不会真的发送一个HTTP GET请求。
在这个例子里,由于设置了启用缓存,AngularJS默认会使用$cacheFactory,这个服务是AngularJS在启动时自动创建的。

如果想要对AngularJS使用的缓存进行更多的自定义控制,可以向请求传入一个自定义的缓存实例代替true。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
巴西龟最长活多久,家养!!! 养胃的药最好的是什么啊 婴儿积食发烧不愿吃药怎么办 板门穴位在哪个部位 手机设置放偷看的方法? 凝结水回收器生产厂家? 个人账户养老金预测公式:现有5万元,缴费20年,能领多少钱? 临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 中国工商银行ATM存取机可以异地无卡存款吗? 荣耀30青春版8 +128vivoS68 +128对比哪个好? 中行手机银行信用卡自动还款是啥意思? 信用卡约定还款什么意思.? 信用卡约定还款,自定义吗? 中国银行手机银行信用卡自动还款是什么意思? 建行信用卡约定还款什么意思 信用卡自动还款是什么意思? 中国农业银行自定义还填满什么意思 干部人事档案日常管理主要包括哪些内容? 事业单位组织人事干部包括那些人?分管领导和组织人事干部是不是就包括单位所有的人了? 荣耀30s和vivo那个好? 干部人事档案工作条例适用于哪些工作? 离退休干部工作是党的什么工作的重要组成部分 人事部是指什么? 中央组织部负责全国干部人事档案工作的哪些方面? 市地级以上机关干部人事部门 干部人事档案工作机构的职责包括哪些? 机关事业单位人事干部做哪些工作 干部、人事工作区别 怎么在angularjs的http请求外调用数据 angularjs中http怎么接受数据 angular js中 http.get方法怎么用 如何利用AngularJS服务接入外部API angular怎么通过$http服务实现excel导出 angularjs 内建服务有哪些 AngularJS如何调用外部接口? 如何在angularjs发送http请求onbeforeunload 这种甲虫叫什么名字? 这个是什么甲虫? 请问,这是什么甲虫? 后台应该怎样获取angularjs传的值 http.post传的 阳彩臂金龟现身贵州印江,这种动物有多珍贵? angularJS中怎么写服务 如何运行angularjs应用 这个是什么甲虫?值多少钱? angular怎么实现跨域请求啊,一直没成功 这是个什么甲虫?值多少钱? 这是什么甲虫啊? angularjs的jsonp怎么用