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 相关文章推荐
IE中jscript/javascript的条件编译
Sep 07 Javascript
关于javascript event flow 的一个bug详解
Sep 17 Javascript
js 中的switch表达式使用示例
Jun 03 Javascript
jQuery实现点击文本框弹出热门标签的提示效果
Nov 17 Javascript
javascript字符串替换及字符串分割示例代码
Dec 12 Javascript
js实现内容显示并使用json传输数据
Mar 16 Javascript
微信小程序  简单实例(阅读器)的实例开发
Sep 29 Javascript
angular十大常见问题
Mar 07 Javascript
Javascript实现秒表倒计时功能
Nov 17 Javascript
详解JS取出两个数组中的不同或相同元素
Mar 20 Javascript
JS+CSS3实现的简易钟表效果示例
Apr 13 Javascript
基于JavaScript的数据结构队列动画实现示例解析
Aug 06 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 网络开发详解之远程文件包含漏洞
2010/04/25 PHP
通过curl模拟post和get方式提交的表单类
2014/04/23 PHP
php实现的操作excel类详解
2016/01/15 PHP
两种php实现图片上传的方法
2016/01/22 PHP
php生成复杂验证码(倾斜,正弦干扰线,黏贴,旋转)
2018/03/12 PHP
PHP的mysqli_thread_id()函数讲解
2019/01/24 PHP
javascript面向对象之Javascript 继承
2010/05/04 Javascript
JQuery live函数
2010/12/24 Javascript
如何改进javascript代码的性能
2015/04/02 Javascript
jquery实现不包含当前项的选择器实例
2015/06/25 Javascript
JavaScript基础知识及常用方法总结
2016/01/10 Javascript
JS实现关闭当前页而不弹出提示框的方法
2016/06/22 Javascript
node+experss实现爬取电影天堂爬虫
2016/11/20 Javascript
js闭包用法实例详解
2016/12/13 Javascript
JavaScript使用math.js进行精确计算操作示例
2018/06/19 Javascript
vue、react等单页面项目部署到服务器的方法及vue和react的区别
2018/09/29 Javascript
vue基于viewer实现的图片查看器功能
2019/04/12 Javascript
vue-router的hooks用法详解
2020/06/08 Javascript
Python实现网站文件的全备份和差异备份
2014/11/30 Python
儿童学习python的一些小技巧
2018/05/27 Python
python判断一个数是否能被另一个整数整除的实例
2018/12/12 Python
在python 中split()使用多符号分割的例子
2019/07/15 Python
Numpy数组array和矩阵matrix转换方法
2019/08/05 Python
浅谈Django QuerySet对象(模型.objects)的常用方法
2020/03/28 Python
Python基于jieba, wordcloud库生成中文词云
2020/05/13 Python
携程旅行网:中国领先的在线旅行服务公司
2017/02/17 全球购物
美国餐厅用品和厨房设备批发网站:KaTom Restaurant Supply
2018/01/27 全球购物
如何估计一张表的大小(假设该表中有1万条数据)
2016/03/27 面试题
大学生就业自荐信
2013/10/26 职场文书
航海技术专业毕业生求职信
2014/04/06 职场文书
学校查摆问题整改措施
2014/09/28 职场文书
装修公司工程部经理岗位职责
2015/04/09 职场文书
阿里云服务器搭建Php+Apache运行环境的详细过程
2021/05/15 PHP
python实现双链表
2022/05/25 Python
Java实现注册登录跳转
2022/06/16 Java/Android
华为HarmonyOS3.0强在哪? 看看鸿蒙3.0这7个小功能
2023/01/09 数码科技