Angular的$http与$location


Posted in Javascript onDecember 26, 2016

$http

但是对于一个web应用,angular是如何同服务端进行交互获得数据的呢?

<script type="text/javascript">
  var m1 = angular.module('myApp',[]);
  m1.controller('Aaa',['$scope','$http',function($scope,$http){
    $http({
      method : 'GET',
      url : 'http/data.php',
    }).success(function(data,state,headers,config){
      console.log(data,state,headers(),config);
    }).error(function(data){
      console.log(data);
    });
  }]);
</script>

用过JQ的同学一看就知道了,我们重点看看success回调的参数。(别忘了我们需要controller上引入http的模块)

data:後端返回给我们的数据。

state:http状态码

headers:http头信息

config:ajax的配置信息 

我们还可以更简单的来使用get和post。

//get
$http.get('http/data.php').success(function(data,state,headers,config){
  console.log(data);
}).error(function(data){
  console.log(data);
});

//post
$http.post('http/data.php',{
  name : 'xiecg',
  age : 18
}).success(function(data,state,headers,config){
  console.log(data);
}).error(function(data){
  console.log(data);
});

 上面都很简单。

下面我们来看看如何用angular来实现跨域(百度搜索关键词补全)。

<div ng-controller="Aaa">
  <input type="text" ng-model="name" ng-keyup="change(name)">
  <input type="button" ng-click="change(name)" value="搜索">
  <ul>
    <li ng-repeat="d in data">{{d}}</li>
  </ul>
</div>

<script type="text/javascript">
  var m1 = angular.module('myApp',[]);
  m1.controller('Aaa',['$scope','$http','$timeout',function($scope,$http,$timeout){
    var timer = null;
    $scope.data = [];
    $scope.change = function(name){
      $timeout.cancel(timer);
      timer = $timeout(function(){
        $http({
          method : 'JSONP',
          url : 'https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd='+name+'&cb=JSON_CALLBACK',
        }).success(function(data,state,headers,config){
          console.log(data);
          $scope.data = data.s;
        }).error(function(data){
          console.log(data);
        });
      },500);
    };
  }]);
</script>

我们分别添加了两个事件ng-keyup以及ng-click来传入用户需要搜索的关键词,为了考虑性能我们使用定时器延迟500毫秒执行change方法。

Angular的$http与$location

$location

<script type="text/javascript">

  var m1 = angular.module('myApp',[]);
  m1.controller('Aaa',['$scope','$location',function($scope,$location){
    var absUrl = $location.absUrl();  //URL地址
    
    //$location.path('aaa').replace();  //禁止历史管理
    var path = $location.path();    //文件路径,路由
    
    //$location.hash('hello');      //设置哈希值
    //$location.search({'age' : '19'});  //设置数据
    var hash = $location.hash();

    var url = $location.url();      //数据

    var host = $location.host();    //主机名

    var port = $location.port();    //端口号

    var protocol = $location.protocol();//协议

    console.log(protocol);

  }]);

</script>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery建立一个按字母顺序排列的友好页面索引(兼容IE6/7/8)
Feb 26 Javascript
jquery判断元素的子元素是否存在的示例代码
Feb 04 Javascript
JavaScript三元运算符的多种使用技巧
Apr 16 Javascript
javascript学习笔记整理(概述、变量、数据类型简介)
Oct 25 Javascript
jquery分页插件jquery.pagination.js实现无刷新分页
Apr 01 Javascript
js基于setTimeout与setInterval实现多线程
Jun 17 Javascript
jQuery事件绑定方法学习总结(推荐)
Nov 21 Javascript
vue基于mint-ui的城市选择3级联动的示例
Oct 25 Javascript
js实现点击展开隐藏效果(实例代码)
Sep 28 Javascript
JS实现移动端在线签协议功能
Aug 22 Javascript
JavaScript组合模式---引入案例分析
May 23 Javascript
JS实现页面侧边栏效果探究
Jan 08 Javascript
Angular ng-repeat指令实例以及扩展部分
Dec 26 #Javascript
详解Angular的内置过滤器和自定义过滤器【推荐】
Dec 26 #Javascript
Angular路由简单学习
Dec 26 #Javascript
详解Angular的双向数据绑定(MV-VM)
Dec 26 #Javascript
Angular工具方法学习
Dec 26 #Javascript
angular双向绑定模拟探索
Dec 26 #Javascript
jquery Banner轮播选项卡
Dec 26 #Javascript
You might like
基于PHPExcel的常用方法总结
2013/06/13 PHP
一个PHP二维数组排序的函数分享
2014/01/17 PHP
php禁止浏览器使用缓存页面的方法
2014/11/07 PHP
phpcms配置列表页以及获得文章发布时间
2017/07/04 PHP
PHP安装memcache扩展的步骤讲解
2019/02/14 PHP
Laravel6.0.4中将添加计划任务事件的方法步骤
2019/10/15 PHP
从JavaScript的函数重名看其初始化方式
2007/03/08 Javascript
javascript eval函数深入认识
2009/02/21 Javascript
javascript时间自动刷新实现原理与步骤
2013/01/06 Javascript
ExtJs动态生成treepanel的Json格式
2015/07/19 Javascript
jQuery+html5+css3实现圆角无刷新表单带输入验证功能代码
2015/08/21 Javascript
Nodejs Stream 数据流使用手册
2016/04/17 NodeJs
Vue+Element使用富文本编辑器的示例代码
2017/08/14 Javascript
angular2路由切换改变页面title的示例代码
2017/08/23 Javascript
nodejs更改项目端口号的方法
2018/05/13 NodeJs
JS函数内部属性之arguments和this实例解析
2018/10/07 Javascript
详解NodeJS Https HSM双向认证实现
2019/03/12 NodeJs
js实现继承的方法及优缺点总结
2019/05/08 Javascript
layui 实现二级弹窗弹出之后 关闭一级弹窗的方法
2019/09/18 Javascript
JavaScript实现移动端带transition动画的轮播效果
2020/03/24 Javascript
基于PHP pthreads实现多线程代码实例
2020/06/24 Javascript
jquery简易手风琴插件的封装
2020/10/13 jQuery
JavaScript实现浏览器网页自动滚动并点击的示例代码
2020/12/05 Javascript
[01:01:14]完美世界DOTA2联赛PWL S2 SZ vs Rebirth 第一场 11.21
2020/11/23 DOTA
详解DeBug Python神级工具PySnooper
2019/07/03 Python
python装饰器练习题及答案
2019/11/01 Python
KIKO MILANO俄罗斯官网:意大利领先的化妆品和护肤品品牌
2021/01/09 全球购物
JSF面试题:Jsf中导航的标签是什么
2013/04/20 面试题
英文简历自荐信范文
2013/12/11 职场文书
应届生求职信范文
2014/06/30 职场文书
有子女的离婚协议书怎么写(范本)
2014/09/29 职场文书
环境卫生工作汇报材料
2014/10/28 职场文书
2016暑期社会实践新闻稿
2015/11/25 职场文书
mongodb数据库迁移变更的解决方案
2021/09/04 MongoDB
python ConfigParser库的使用及遇到的坑
2022/02/12 Python
SQL语句多表联合查询的方法示例
2022/04/18 MySQL