全网整合营销服务商

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

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

浅谈angular.js跨域post解决方案

跨域,前端开发中经常遇到的问题,AngularJS实现跨域方式类似于Ajax,使用CORS机制。

下面阐述一下AngularJS中使用$http实现跨域请求数据。

AngularJS XMLHttpRequest:$http用于读取远程服务器的数据

$http.post(url, data, [config]).success(function(){ ... });
$http.get(url, [config]).success(function(){ ... });
$http.get(url, [config]).success(function(){ ... });

一、$http.jsonp【实现跨域】

1. 指定callback和回调函数名,函数名为JSON_CALLBACK时,会调用success回调函数,JSON_CALLBACK必须全为大写。

2. 指定其它回调函数,但必须是定义在window下的全局函数。url中必须加上callback。

二、$http.get【实现跨域】

1. 在服务器端设置允许在其他域名下访问

response.setHeader("Access-Control-Allow-Origin", "*"); //允许所有域名访问
response.setHeader("Access-Control-Allow-Origin", "http://www.123.com"); //允许www.123.com访问

2. AngularJS端使用$http.get()

三、$http.post【实现跨域】

1. 在服务器端设置允许在其他域名下访问,及响应类型、响应头设置

response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods","POST");
response.setHeader("Access-Control-Allow-Headers","x-requested-with,content-type");

2. AngularJS端使用$http.post(),同时设置请求头信息

$http.post('http://localhost/ajax/getAllIndustryCategoty.pt',{languageColumn:'name_eu'},{'Content-Type':'application/x-www-form-urlencoded'}).success(function(data){
 $scope.industries = data;
 });

四、实现方式

跨域方式一【JSONP】:

方法一:

$http.jsonp("http://localhost/sitesettings/getBadgeInfo.pt?jsonp=JSON_CALLBACK&siteid=137bd406").success(function(data){ ... });
// The name of the callback should be the string JSON_CALLBACK.

方法二【返回值,需要使用对应callback方法接收,但如何置于$scope?】:

$http.jsonp("http://localhost/sitesettings/getBadgeInfo.pt?jsonp=badgeabc&siteid=137bd406");
function badgeabc(data){ ... }
public String execute() throws Exception { 
 String result = FAIL;
 response.setHeader("", "");
 SiteHandlerAction siteHandlerAction = (SiteHandlerAction)BeansFactory.getBean(SiteHandlerAction.class);
 BadgeHandlerAction badgeHandlerAction = (BadgeHandlerAction)BeansFactory.getBean(BadgeHandlerAction.class);
 if("".equals(siteid) || siteid == null || StringUtils.isBlank("jsonp")){
 result = FAIL;
 }else{
 Site site = siteHandlerAction.find(siteid);
 UserBadgeStatus userBadgeStatus = badgeHandlerAction.getUserBadgeStatus(site.getId());
 if(userBadgeStatus != null){
  result = "{\"t\":"+userBadgeStatus.getStyle()+",\"l\":"+userBadgeStatus.getSuspend_location()+",\"s\":"+site.getId()+"}";
  JSONObject jsonObj = JSONObject.fromObject(result);
  String json = jsonObj.toString();
  result = jsonp + "(" + json + ")";
 }
 }
 PrintWriter write = response.getWriter();
 write.print(result);
 write.flush();
 write.close();
 return NONE;
}

跨域方式二【$http.get()】:

function getAdustryController($scope,$http){
 $http.get('http://localhost/ajax/getAllIndustryCategoty.pt?languageColumn=name_eu').success(function(data){
 $scope.industries = data;
 });
}

跨域方式三【$http.post()】:

function getAdustryController($scope,$http){
 $http.post('http://localhost/ajax/getAllIndustryCategoty.pt',{languageColumn:'name_eu'},{'Content-Type':'application/x-www-form-urlencoded'}).success(function(data){
 $scope.industries = data;
 });
}
// java端支持跨域请求
public String execute(){
 response.setHeader("Access-Control-Allow-Origin", "*"); //允许哪些url可以跨域请求到本域
 response.setHeader("Access-Control-Allow-Methods","POST"); //允许的请求方法,一般是GET,POST,PUT,DELETE,OPTIONS
 response.setHeader("Access-Control-Allow-Headers","x-requested-with,content-type"); //允许哪些请求头可以跨域
 
 SiteHandlerAction SiteHandler = (SiteHandlerAction) BeansFactory.getBean(SiteHandlerAction.class);
 List list = SiteHandler.getAllIndustryCategory(); //所有的分类集合
 JSONArray jsonArray = JSONArray.fromObject(list); //将list转为json
 String json = jsonArray.toString(); //转为json字符串
 try {
 PrintWriter write = response.getWriter();
 write.print(json);
 write.close();
 } catch (IOException e) {
 e.printStackTrace();
 }
 return NONE;
}

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


# angular2  # post  # 跨域  # angular2.0  # angular  # post跨域  # Angular4开发解决跨域问题详解  # AngularJS实现的JSONP跨域访问数据传输功能详解  # angular.js中解决跨域问题的三种方式  # 详解基于angular-cli配置代理解决跨域请求问题  # Angular实现跨域(搜索框的下拉列表)  # 解析AngularJS中get请求URL出现的跨域问题  # 详解AngularJS如何实现跨域请求  # AngularJs解决跨域问题案例详解(简单方法)  # AngularJS iframe跨域打开内容时报错误的解决办法  # 回调  # 类似于  # 大家多多  # 返回值  # type  # content  # localhost  # ajax  # pt  # getAllIndustryCategoty  # www  # Origin  # Methods  # requested  # Headers 


相关文章: 已有域名如何快速搭建专属网站?  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  如何快速配置高效服务器建站软件?  婚礼视频制作网站,学习*后期制作的网站有哪些?  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  高端云建站费用究竟需要多少预算?  建站之星手机一键生成:多端自适应+小程序开发快速建站指南  php条件判断怎么写_ifelse和switchcase的使用区别【对比】  建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析  如何快速查询网址的建站时间与历史轨迹?  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  建站之星安装后如何配置SEO及设计样式?  如何在局域网内绑定自建网站域名?  建站之星如何通过成品分离优化网站效率?  行程制作网站有哪些,第三方机票电子行程单怎么开?  如何在建站宝盒中设置产品搜索功能?  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  如何通过远程VPS快速搭建个人网站?  英语简历制作免费网站推荐,如何将简历翻译成英文?  如何通过智能用户系统一键生成高效建站方案?  测试制作网站有哪些,测试性取向的权威测试或者网站?  深圳网站制作培训,深圳哪些招聘网站比较好?  免费ppt制作网站,有没有值得推荐的免费PPT网站?  如何通过西部数码建站助手快速创建专业网站?  高性能网站服务器部署指南:稳定运行与安全配置优化方案  如何在IIS7中新建站点?详细步骤解析  专业公司网站制作公司,用什么语言做企业网站比较好?  建站之星与建站宝盒如何选择最佳方案?  如何通过二级域名建站提升品牌影响力?  建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南  专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?  教学论文网站制作软件有哪些,写论文用什么软件 ?  建站主机功能解析:服务器选择与快速搭建指南  网站app免费制作软件,能免费看各大网站视频的手机app?  html制作网站的步骤有哪些,iapp如何添加网页?  如何在七牛云存储上搭建网站并设置自定义域名?  如何快速生成ASP一键建站模板并优化安全性?  名字制作网站免费,所有小说网站的名字?  洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?  较简单的网站制作软件有哪些,手机版网页制作用什么软件?  专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?  简历在线制作网站免费版,如何创建个人简历?  建站之星如何保障用户数据免受黑客入侵?  建站上市公司网站建设方案与SEO优化服务定制指南  如何快速打造个性化非模板自助建站?  建站之星如何实现五合一智能建站与营销推广?  c# F# 的 MailboxProcessor 和 C# 的 Actor 模型  建站之星IIS配置教程:代码生成技巧与站点搭建指南  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站? 

您的项目需求

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