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 相关文章推荐
获取当前网页document.url location.href区别总结
May 10 Javascript
根据鼠标的位置动态的控制层的位置
Nov 24 Javascript
Jquery UI震动效果实现原理及步骤
Feb 04 Javascript
jQuery获取(选中)单选,复选框,下拉框中的值
Feb 21 Javascript
JS给Textarea文本框添加行号的方法
Aug 20 Javascript
Bootstrap的class样式小结
Dec 01 Javascript
微信小程序 引入es6 promise
Apr 12 Javascript
详解vue-router2.0动态路由获取参数
Jun 14 Javascript
vue中使用ueditor富文本编辑器
Feb 08 Javascript
微信小程序云开发详细教程
May 16 Javascript
jQuery HTML获取内容和属性操作实例分析
May 20 jQuery
node使用async_hooks模块进行请求追踪
Jan 28 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
DOTA2【瓜皮时刻】Vol.91 RTZ山史最惨“矿难”
2021/03/05 DOTA
怎样才能成为PHP高手?学会“懒惰”的编程
2006/12/05 PHP
eAccelerator的安装与使用详解
2013/06/13 PHP
根据一段代码浅谈Javascript闭包
2010/12/14 Javascript
如何确保JavaScript的执行顺序 之jQuery.html并非万能钥匙
2011/03/03 Javascript
JavaScript组件开发完整示例
2015/12/15 Javascript
Bootstrap树形控件使用方法详解
2016/01/27 Javascript
Js实现简单的小球运动特效
2016/02/18 Javascript
基于JS判断iframe是否加载成功的方法(多种浏览器)
2016/05/13 Javascript
深入理解Javascript中的自执行匿名函数
2016/06/03 Javascript
深入分析node.js的异步API和其局限性
2016/09/05 Javascript
基于Vue.js实现简单搜索框
2020/03/26 Javascript
AngularJS实现页面定时刷新
2017/03/14 Javascript
angularJS 发起$http.post和$http.get请求的实现方法
2017/05/18 Javascript
使用Vue完成一个简单的todolist的方法
2017/12/01 Javascript
[05:39]2014DOTA2西雅图国际邀请赛 淘汰赛7月14日TOPPLAY
2014/07/14 DOTA
[32:17]完美世界DOTA2联赛循环赛LBZS vs Forest第二场 10月30日
2020/10/31 DOTA
基于python3 类的属性、方法、封装、继承实例讲解
2017/09/19 Python
python 平衡二叉树实现代码示例
2018/07/07 Python
Python实现的合并两个有序数组算法示例
2019/03/04 Python
python3 tkinter实现点击一个按钮跳出另一个窗口的方法
2019/06/13 Python
Django发送邮件功能实例详解
2019/09/02 Python
Python with关键字,上下文管理器,@contextmanager文件操作示例
2019/10/17 Python
在python3.9下如何安装scrapy的方法
2021/02/03 Python
html5简介及新增功能介绍
2020/05/18 HTML / CSS
美国婴儿用品店:Babies”R”Us
2017/10/12 全球购物
小学老师寄语大全
2014/04/04 职场文书
2014年电厂个人工作总结
2014/11/27 职场文书
2015年质量月活动总结报告
2015/03/27 职场文书
奖励申请报告范文
2015/05/15 职场文书
复兴之路展览观后感
2015/06/02 职场文书
单位病假条范文
2015/08/17 职场文书
小组组名及励志口号
2015/12/24 职场文书
2016三严三实专题教育活动心得体会
2016/01/06 职场文书
个人落户申请书怎么写?
2019/06/28 职场文书
Django数据库(SQlite)基本入门使用教程
2022/07/07 Python