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上传插件fineuploader上传文件使用方法(jquery图片上传插件)
Dec 05 Javascript
使用jQuery判断IE浏览器版本的代码
Jun 14 Javascript
jQuery form插件之ajaxForm()和ajaxSubmit()的可选参数项对象
Jan 23 Javascript
JavaScript隐式类型转换
Mar 15 Javascript
基于javascript实现的快速排序
Dec 02 Javascript
Jquery把获取到的input值转换成json
May 15 jQuery
javascript  删除select中的所有option的实例
Sep 17 Javascript
JS实现瀑布流布局
Oct 21 Javascript
Vue三层嵌套路由的示例代码
May 05 Javascript
JavaScript事件委托原理与用法实例分析
Jun 07 Javascript
AngularJS自定义表单验证功能实例详解
Aug 24 Javascript
浅谈鸿蒙 JavaScript GUI 技术栈
Sep 17 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
IIS环境下快速安装、配置和调试PHP5.2.0
2006/12/17 PHP
如何判断php数组的维度
2013/06/10 PHP
老生常谈PHP面向对象之解释器模式
2017/05/17 PHP
PHP 实现页面静态化的几种方法
2017/07/23 PHP
PDO::getAvailableDrivers讲解
2019/01/28 PHP
jquery对表单操作2
2011/04/06 Javascript
jquery动态加载图片数据练习代码
2011/08/04 Javascript
解析瀑布流布局:JS+绝对定位的实现
2013/05/08 Javascript
引用 js在IE与FF之间的区别详细解析
2013/11/20 Javascript
Javascript实现网络监测的方法
2015/07/31 Javascript
浅析jQuery 遍历函数,javascript中的each遍历
2016/05/25 Javascript
jquery获取所有选中的checkbox实现代码
2016/05/26 Javascript
关于JSON与JSONP简单总结
2016/08/16 Javascript
JS实现中国公民身份证号码有效性验证
2017/02/20 Javascript
vscode 开发Vue项目的方法步骤
2018/11/25 Javascript
vue数据响应式原理知识点总结
2020/02/16 Javascript
vuex 多模块时 模块内部的mutation和action的调用方式
2020/07/24 Javascript
JavaScript 几种循环方式以及模块化的总结
2020/09/03 Javascript
[56:00]DOTA2上海特级锦标赛主赛事日 - 4 胜者组决赛Secret VS Liquid第一局
2016/03/05 DOTA
用Python中的wxPython实现最基本的浏览器功能
2015/04/14 Python
Python基于sftp及rsa密匙实现远程拷贝文件的方法
2016/09/21 Python
pycharm远程调试openstack代码
2017/11/21 Python
Python实现抢购IPhone手机
2018/02/07 Python
DJango的创建和使用详解(默认数据库sqlite3)
2019/11/18 Python
学Python 3的理由和必要性
2019/11/19 Python
基于Python fminunc 的替代方法
2020/02/29 Python
10个python爬虫入门基础代码实例 + 1个简单的python爬虫完整实例
2020/12/16 Python
英国最红的高街时尚品牌:Topshop
2016/08/05 全球购物
戴尔加拿大官网:Dell加拿大
2016/09/17 全球购物
求最大连续递增数字串(如"ads3sl456789DF3456ld345AA"中的"456789")
2015/09/11 面试题
什么是makefile? 如何编写makefile?
2012/08/08 面试题
社团文化节策划书
2014/02/01 职场文书
企业精细化管理实施方案
2014/03/23 职场文书
民主生活会对照检查材料范文
2014/10/01 职场文书
小学数学教师研修感悟
2015/11/18 职场文书
PostgreSQL事务回卷实战案例详析
2022/03/25 PostgreSQL