最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解AngularJS如何實(shí)現(xiàn)跨域請求

 更新時(shí)間:2016年08月22日 15:16:42   投稿:daisy  
跨域請求一直是網(wǎng)頁編程中的一個難題,在過去,絕大多數(shù)人都傾向于使用JSONP來解決這一問題。不過現(xiàn)在,我們可以考慮一下W3C中一項(xiàng)新的特性——CORS(Cross-Origin Resource Sharing)了。

跨域,前端開發(fā)中經(jīng)常遇到的問題,AngularJS實(shí)現(xiàn)跨域方式類似于Ajax,使用CORS機(jī)制。

下面闡述一下AngularJS中使用$http實(shí)現(xiàn)跨域請求數(shù)據(jù)。

AngularJS XMLHttpRequest:$http用于讀取遠(yuǎn)程服務(wù)器的數(shù)據(jù)

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

一、$http.jsonp【實(shí)現(xiàn)跨域】

1.指定callback和回調(diào)函數(shù)名,函數(shù)名為JSON_CALLBACK時(shí),會調(diào)用success回調(diào)函數(shù),JSON_CALLBACK必須全為大寫。

2.指定其它回調(diào)函數(shù),但必須是定義在window下的全局函數(shù)。url中必須加上callback

二、$http.get【實(shí)現(xiàn)跨域】

1.在服務(wù)器端設(shè)置允許在其他域名下訪問

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【實(shí)現(xiàn)跨域】

1.在服務(wù)器端設(shè)置允許在其他域名下訪問,及響應(yīng)類型、響應(yīng)頭設(shè)置

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() ,同時(shí)設(shè)置請求頭信息

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

四、實(shí)現(xiàn)方式

跨域方式一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.

方法二【返回值,需要使用對應(yīng)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轉(zhuǎn)為json
String json = jsonArray.toString(); //轉(zhuǎn)為json字符串
try {
 PrintWriter write = response.getWriter();
 write.print(json);
 write.close();
} catch (IOException e) {
 e.printStackTrace();
}
return NONE;
}

總結(jié)

以上就是本文的全部內(nèi)容,希望本文的內(nèi)容能對大家學(xué)習(xí)使用AngularJS有所幫助。

相關(guān)文章

  • 如何以Angular的姿勢打開Font-Awesome詳解

    如何以Angular的姿勢打開Font-Awesome詳解

    這篇文章主要給大家介紹了關(guān)于如何以Angular的姿勢打開Font-Awesome的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Angular具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-04-04
  • AngularJS實(shí)現(xiàn)使用路由切換視圖的方法

    AngularJS實(shí)現(xiàn)使用路由切換視圖的方法

    這篇文章主要介紹了AngularJS實(shí)現(xiàn)使用路由切換視圖的方法,結(jié)合學(xué)生信息管理系統(tǒng)為例分析了使用controllers.js控制器來切換視圖的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2017-01-01
  • AngularJS ng-repeat指令及Ajax的應(yīng)用實(shí)例分析

    AngularJS ng-repeat指令及Ajax的應(yīng)用實(shí)例分析

    這篇文章主要介紹了AngularJS ng-repeat指令及Ajax的應(yīng)用,結(jié)合實(shí)例形式分析了ng-repeat指令的功能及ajax請求交互相關(guān)操作技巧,需要的朋友可以參考下
    2017-07-07
  • Angular 4依賴注入學(xué)習(xí)教程之InjectToken的使用(八)

    Angular 4依賴注入學(xué)習(xí)教程之InjectToken的使用(八)

    這篇文章主要給大家介紹了關(guān)于Angular 4依賴注入之InjectToken使用的相關(guān)資料,文中介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Angular4具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來跟著小編一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-06-06
  • AngularJS開發(fā)教程之控制器之間的通信方法分析

    AngularJS開發(fā)教程之控制器之間的通信方法分析

    這篇文章主要介紹了AngularJS開發(fā)教程之控制器之間的通信方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了AngularJS控制器之間通信的三種常用方式及相關(guān)使用技巧,需要的朋友可以參考下
    2016-12-12
  • 詳解Angular路由動畫及高階動畫函數(shù)

    詳解Angular路由動畫及高階動畫函數(shù)

    本文主要講解了Angular的路由動畫和高階動畫函數(shù),對此感興趣的同學(xué),可以把代碼親自實(shí)驗(yàn)一下,理解其原理。
    2021-05-05
  • 詳解angularjs 學(xué)習(xí)之 scope作用域

    詳解angularjs 學(xué)習(xí)之 scope作用域

    本篇文章主要介紹了詳解angularjs 學(xué)習(xí)之 scope作用域,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • Angular用來控制元素的展示與否的原生指令介紹

    Angular用來控制元素的展示與否的原生指令介紹

    這篇文章主要介紹了Angular用來控制元素的展示與否的原生指令的用法及區(qū)別,非常詳細(xì),這里推薦給小伙伴們
    2015-01-01
  • 詳解Angular.js中$http攔截器的介紹及使用

    詳解Angular.js中$http攔截器的介紹及使用

    攔截器就是在目標(biāo)達(dá)到目的地之前對其進(jìn)行處理以便處理結(jié)果更加符合我們的預(yù)期,下面這篇文章主要給大家介紹了關(guān)于Angular.js中$http攔截器的介紹及使用的相關(guān)資料,文中介紹的非常詳細(xì),需要的朋友可以參考學(xué)習(xí)。
    2017-07-07
  • angular2倒計(jì)時(shí)組件使用詳解

    angular2倒計(jì)時(shí)組件使用詳解

    這篇文章主要為大家詳細(xì)介紹了angular2倒計(jì)時(shí)組件的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01

最新評論

彩票| 定结县| 庆城县| 西丰县| 含山县| 中宁县| 马山县| 沙坪坝区| 南澳县| 关岭| 寿阳县| 醴陵市| 大兴区| 杭锦后旗| 饶平县| 顺义区| 牙克石市| 平潭县| 南康市| 涡阳县| 安图县| 登封市| 绥芬河市| 梧州市| 清丰县| 包头市| 正阳县| 丹东市| 灵台县| 长寿区| 龙岩市| 东兰县| 黎城县| 夏津县| 曲沃县| 凤庆县| 四会市| 宽甸| 巴南区| 吉隆县| 西城区|