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的button默认enter事件(回车事件)。
May 18 Javascript
原生js的弹出层且其内的窗口居中
May 14 Javascript
JavaScript控制table某列不显示的方法
Mar 16 Javascript
JavaScript动态添加列的方法
Mar 25 Javascript
jQuery实现带幻灯的tab滑动切换风格菜单代码
Aug 27 Javascript
JS+CSS实现带小三角指引的滑动门效果
Sep 22 Javascript
深入分析jsonp协议原理
Sep 26 Javascript
关于Vue项目跨平台运行问题的解决方法
Sep 18 Javascript
ES6学习笔记之字符串、数组、对象、函数新增知识点实例分析
Jan 22 Javascript
解决vue scoped scss 无效的问题
Sep 04 Javascript
详解Vue的异步更新实现原理
Dec 22 Vue.js
微信小程序之高德地图多点路线规划过程示例详解
Jan 18 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
php设计模式 Command(命令模式)
2011/06/26 PHP
hadoop常见错误以及处理方法详解
2013/06/19 PHP
PHP用mysql_insert_id()函数获得刚插入数据或当前发布文章的ID
2016/11/25 PHP
Mootools 1.2教程 选项卡效果(Tabs)
2009/09/15 Javascript
JavaScript去掉空格的方法集合
2010/12/28 Javascript
JQuery学习笔记 nt-child的使用
2011/01/17 Javascript
jQuery随机切换图片的小例子
2013/04/18 Javascript
一个jquery实现的不错的多行文字图片滚动效果
2014/09/28 Javascript
推荐4个原生javascript常用的函数
2015/01/12 Javascript
动态加载JavaScript文件的两种方法
2016/04/22 Javascript
AngularJS基础 ng-readonly 指令简单示例
2016/08/02 Javascript
使用 jQuery.ajax 上传带文件的表单遇到的问题
2016/10/31 Javascript
javascript基本数据类型及类型检测常用方法小结
2016/12/14 Javascript
Vue.js鼠标悬浮更换图片功能
2017/05/17 Javascript
Three.js利用Detector.js插件如何实现兼容性检测详解
2017/09/26 Javascript
深入理解vue中的slot与slot-scope
2019/04/22 Javascript
Vue 中可以定义组件模版的几种方式
2019/08/06 Javascript
基于leaflet.js实现修改地图主题样式的流程分析
2020/05/15 Javascript
js禁止查看源文件屏蔽Ctrl+u/s、F12、右键等兼容IE火狐chrome
2020/10/01 Javascript
vant-ui框架的一个bug(解决切换后onload不触发)
2020/11/11 Javascript
详解Python编程中包的概念与管理
2015/10/16 Python
Python中字符串的格式化方法小结
2016/05/03 Python
Python图算法实例分析
2016/08/13 Python
基于scrapy的redis安装和配置方法
2018/06/13 Python
python 使用elasticsearch 实现翻页的三种方式
2020/07/31 Python
荷兰网上买鞋:MooieSchoenen.nl
2017/09/12 全球购物
俄罗斯厨房产品购物网站:COOK HOUSE
2021/03/15 全球购物
小学红领巾中秋节广播稿
2014/01/13 职场文书
《维生素c的故事》教学反思
2014/02/18 职场文书
体育系毕业生求职自荐信
2014/04/16 职场文书
给校长的建议书500字
2014/05/15 职场文书
会计工作检讨书
2015/02/19 职场文书
承诺书的内容有哪些,怎么写?
2019/06/21 职场文书
中国古代史学名著《战国策》概述
2019/08/09 职场文书
Windows10下安装MySQL8
2021/04/06 MySQL
教你怎么用Python监控愉客行车程
2021/04/29 Python