12-Angular的http与location

$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方法。

$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>

学习笔记,如有不足,请指正!转载请保留原文链接,谢谢。

最後,微博求粉,谢谢。

原文地址:https://www.cnblogs.com/xiaoxie53/p/5071398.html