全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

AngularJS中$http的交互问题

这篇文章,主要是通过我们熟悉的jquery中ajax和jsonp的类型方式,总结一下$http的使用。

$http 是 AngularJS 中的一个核心服务,用于读取远程服务器的数据。

1. angular中的ajax

写法一:

$http({
  method: 'GET', //可以改成POST
  url: '/someUrl'
}).then(function successCallback(response) {
    // 请求成功执行代码
  }, function errorCallback(response) {
    // 请求失败执行代码
});

示例:

var app = angular.module('myApp', []);  
app.controller('siteCtrl', function($scope, $http) {
  $http({
    method: 'GET',
    url: 'https://www.runoob.com/try/angularjs/data/sites.php',

  }).then(function successCallback(response) {
      console.log(response.data);
    }, function errorCallback(response) {
      console.log('失败');
  });
});

写法二:

①GET请求

$http.get('/someUrl',config).then(successCallback, errorCallback); 
$http.get('/someUrl',{params:{}}).then(successCallback, errorCallback);

示例:

$http.get({
  'http://10.30.24.12/emp-management/empDetail',
  {params:{"id":3}}
}).then(function successCallback(response) {
    console.log(response.data.name);
  }, function errorCallback(response) {
    console.log('失败');
});

②POST请求

$http.post('/someUrl', data, config).then(successCallback, errorCallback);

示例:

$http({ 
  method:'post', 
  url:'post.php', 
  data:{name:"aaa",id:"1",age:"20"} 
}).then(function successCallback(response) {
    console.log(response);
  }, function errorCallback(response) {
    console.log('失败');
});

//但是,这时候你可能收不到返回的数据,结果为null,这是因为要转换成form data。 
//解决方案(在post中进行相应配置):
$http({ 
  method:'post', 
  url:'post.php', 
  data:{name:"aaa",id:"1",age:"20"}, 
  headers:{'Content-Type': 'application/x-www-form-urlencoded'}, 
  transformRequest: function(obj) { 
   var str = []; 
   for(var p in obj){ 
    str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p])); 
   } 
   return str.join("&"); 
  } 
}).then(function successCallback(response) {
    console.log(response);
  }, function errorCallback(response) {
    console.log('失败');
});

/*
原理解读:
首先,配置headers是因为,POST提交时,使用的Content-Type是application/x-www-form-urlencoded,
而使用原生AJAX的POST请求如果不指定请求头RequestHeader,默认使用的Content-Type是text/plain;charset=UTF-8,
在html中form的Content-type默认值是Content-type:application/x-www-form-urlencoded,所以要进行相应的配置。
然后,配置transformRequest是因为,如果参数是对象,需要转化一下。
*/

2.angular中的jsonp

$http({method:'JSONP',url:''}).success().error();
$http.jsonp('/someUrl').success().error();

//这里要注意,跨域请求的url后一定要追加参数callback,并且callback的值是固定的,即JSON_CALLBACK,尽量不要去做任何改动

示例:

$http({ 
  method: 'JSONP', 
  url: 'http://www.b.com/test.php?callback=JSON_CALLBACK' 
}).success(function(response){ 
  console.log(response); 
}); 

$http.jsonp(
  'http://www.b.com/test.php?callback=JSON_CALLBACK'
).success(function (response){ 
  console.log(response); 
}); 

3.最后,总结一*意事项:

(1)代码里使用的.then()也可以写成.success().error(),但是v1.5中 $http 的 success 和 error 方法已废弃,使用 then 方法替代;

(2)关于参数:用GET的时候就是params,用POST/PUT/PATCH/DELETE就是data;

(3)$http.jsonp跨域请求的url后一定要追加参数callback,并且callback的值是固定的,即JSON_CALLBACK,尽量不要去做任何改动。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# angularjs  # 交互  # $http  # angularjs前后端交互  # 深入理解Angularjs中$http.post与$.post  # AngularJS $http模块POST请求实现  # AngularJS出现$http异步后台无法获取请求参数问题的解决方法  # 简介AngularJS中$http服务的用法  # 解决angularjs中同步执行http请求的方法  # 是因为  # 去做  # 要注意  # 这篇文章  # 这是因为  # 转换成  # 大家多多  # 默认值  # 收不到  # 主要是  # 这时候  # https  # www  # runoob  # myApp  # module  # app  # scope  # siteCtrl  # controller 


相关文章: 最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  如何通过万网虚拟主机快速搭建网站?  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  定制建站流程解析:需求评估与SEO优化功能开发指南  C#如何使用XPathNavigator高效查询XML  沈阳制作网站公司排名,沈阳装饰协会官方网站?  高端网站建设与定制开发一站式解决方案 中企动力  建站之星安装后如何自定义网站颜色与字体?  广州美橙建站如何快速搭建多端合一网站?  建站之星导航配置指南:自助建站与SEO优化全解析  c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】  建站主机默认首页配置指南:核心功能与访问路径优化  如何正确下载安装西数主机建站助手?  常州自助建站:操作简便模板丰富,企业个人快速搭建网站  C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)  建站之星客服服务时间及联系方式如何?  如何在IIS管理器中快速创建并配置网站?  c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗  上海网站制作网站建设公司,建筑电工证网上查询系统入口?  如何快速搭建高效简练网站?  建站主机数据库如何配置才能提升网站性能?  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  小自动建站系统:AI智能生成+拖拽模板,多端适配一键搭建  实例解析Array和String方法  如何配置FTP站点权限与安全设置?  番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?  c# Task.ConfigureAwait(true) 在什么场景下是必须的  如何在Windows服务器上快速搭建网站?  广平建站公司哪家专业可靠?如何选择?  网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?  如何用已有域名快速搭建网站?  如何彻底删除建站之星生成的Banner?  深圳网站制作的公司有哪些,dido官方网站?  如何用西部建站助手快速创建专业网站?  建站之星各版本价格是多少?  如何在云服务器上快速搭建个人网站?  小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化  建站之星如何修改网站生成路径?  浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?  临沂网站制作公司有哪些,临沂第四中学官网?  高防服务器租用指南:配置选择与快速部署攻略  简易网站制作视频教程,使用记事本编写一个简单的网页html文件?  建站主机选购指南:核心配置与性价比推荐解析  制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?  制作营销网站公司,淘特是干什么用的?  如何确保FTP站点访问权限与数据传输安全?  Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解  开源网站制作软件,开源网站什么意思?  家庭建站与云服务器建站,如何选择更优?  如何注册花生壳免费域名并搭建个人网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。