AngularJS中$http的交互问题

发布时间 - 2026-01-11 00:24:49    点击率:

这篇文章,主要是通过我们熟悉的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 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何用虚拟主机快速搭建网站?详细步骤解析  EditPlus中的正则表达式实战(5)  Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】  Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤  Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧  Laravel怎么进行浏览器测试_Laravel Dusk自动化浏览器测试入门  Laravel怎么连接多个数据库_Laravel多数据库连接配置  WEB开发之注册页面验证码倒计时代码的实现  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  HTML 中如何正确使用模板变量为元素的 name 属性赋值  Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明  php增删改查怎么学_零基础入门php数据库操作必知基础【教程】  JavaScript如何操作视频_媒体API怎么控制播放  Laravel如何使用Service Container和依赖注入?(代码示例)  laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法  实例解析angularjs的filter过滤器  Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道  Laravel如何保护应用免受CSRF攻击?(原理和示例)  ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集  node.js报错:Cannot find module 'ejs'的解决办法  油猴 教程,油猴搜脚本为什么会网页无法显示?  Laravel如何实现用户密码重置功能?(完整流程代码)  如何利用DOS批处理实现定时关机操作详解  Laravel怎么调用外部API_Laravel Http Client客户端使用  千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】  怎么用AI帮你为初创公司进行市场定位分析?  专业商城网站制作公司有哪些,pi商城官网是哪个?  Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】  Laravel如何实现API速率限制?(Rate Limiting教程)  Laravel storage目录权限问题_Laravel文件写入权限设置  Mybatis 中的insertOrUpdate操作  如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环  python中快速进行多个字符替换的方法小结  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  创业网站制作流程,创业网站可靠吗?  Firefox Developer Edition开发者版本入口  Laravel定时任务怎么设置_Laravel Crontab调度器配置  Laravel怎么自定义错误页面_Laravel修改404和500页面模板  Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面  高性能网站服务器配置指南:安全稳定与高效建站核心方案  Laravel怎么使用artisan命令缓存配置和视图  b2c电商网站制作流程,b2c水平综合的电商平台?  java ZXing生成二维码及条码实例分享  Laravel怎么实现微信登录_Laravel Socialite第三方登录集成  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  PHP正则匹配日期和时间(时间戳转换)的实例代码  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  Laravel如何与Docker(Sail)协同开发?(环境搭建教程)  Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】