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

js實(shí)現(xiàn)跨域的方法實(shí)例詳解

 更新時(shí)間:2015年06月24日 11:48:41   作者:鏡中望月  
這篇文章主要介紹了js實(shí)現(xiàn)跨域的方法,實(shí)例分析了幾種常用的javascript實(shí)現(xiàn)跨域的技巧,需要的朋友可以參考下

本文實(shí)例講述了js實(shí)現(xiàn)跨域的方法。分享給大家供大家參考。具體分析如下:

由于同源策略的限制,XMLHttpRequest只允許請(qǐng)求當(dāng)前源(包含域名、協(xié)議、端口)的資源。

json與jsonp的區(qū)別:

JSON是一種數(shù)據(jù)交換格式,而JSONP是一種依靠開發(fā)人員創(chuàng)造出的一種非官方跨域數(shù)據(jù)交互協(xié)議。

script標(biāo)簽經(jīng)常被用來加載不同域下的資源,可以繞過同源策略。(有src屬性的都可以獲取異域文件)。
如果請(qǐng)求的這個(gè)遠(yuǎn)程數(shù)據(jù)本身就是一段可執(zhí)行的js,那么這些js會(huì)被執(zhí)行(相當(dāng)于eval)。
 
方法一:

利用script標(biāo)簽請(qǐng)求(<script src="http://....jsp?callback=回調(diào)函數(shù)名"></script>)
在使用script標(biāo)簽請(qǐng)求前,先進(jìn)行回調(diào)函數(shù)的申明調(diào)用,

<script>
function 回調(diào)函數(shù)名(data數(shù)據(jù)){ 。。。。 }
</script>
<script src="http://....jsp?callback=回調(diào)函數(shù)名"></script>

使用JSON來傳遞javascript對(duì)象是一種最簡(jiǎn)單的方式了,這樣的跨域通訊方式稱為JSONP。

遠(yuǎn)程服務(wù)器拼湊字符串:

回調(diào)函數(shù)名( {"name1":"data1","name2","data2"} )

這種以后臺(tái)拼湊json數(shù)據(jù),利用回調(diào)函數(shù)傳參的形式返回給客戶端
(可以直接調(diào)用相當(dāng)于已經(jīng)將獲取的字符串進(jìn)行eval了處理)

例如:

function databack(data){ alert(data.name1) }
// 會(huì)輸出顯示"data1"

方法二:

jquery實(shí)現(xiàn)異域加載方法更為簡(jiǎn)單(與ajax異步請(qǐng)求方式相同)

$.ajax({
  type : "get",
  dataType:"json",
  success : function(data){ alert(data.name1) };
})

或者簡(jiǎn)寫形式

var url = "http://.....jsp?callback=?";
// 在jquery中此處的callback值可以為任意,
// 因?yàn)閖query進(jìn)行處理后都是利用success回調(diào)函數(shù)進(jìn)行數(shù)據(jù)的接受;
$.getJSON( url, function(data){ alert(data.name1) });

方法三:

ajax跨域之服務(wù)端代理

在同源的后臺(tái)設(shè)置一個(gè)代理程序(proxy.jsp...);
在服務(wù)器端與異域的服務(wù)器交互。

jquery前臺(tái)傳輸數(shù)據(jù):

例如:

$.get(
   'http://。。。.jsp', // 代理程序地址
   {
    name1 : "data1",
    name2 : "data2"
   },
   function(data){
   if(data == 1) alert('發(fā)送成功!');
   }
);

后臺(tái)數(shù)據(jù)的處理 :

String data1 = request.getParameter("name1");
........
// 此處的url為另一域下的地址并帶有參數(shù)
String url = "http://.....com/.../sss.jsp?" + "name1=" + data1+ "name2=" + data2;
// 跳轉(zhuǎn)到另一個(gè)域進(jìn)行數(shù)據(jù)的處理并返回json格式的數(shù)據(jù)
request.getRequestDispatcher(url).forward(request,response);

方法四:

利用iframe標(biāo)簽的src屬性,進(jìn)行跨域的訪問,將獲取到的值存儲(chǔ)到當(dāng)前的iframe中,然后再同一頁面進(jìn)行獲取該iframe的body內(nèi)的值。

<body>
  <div id="show"></div>
  <iframe id="frame" style="display: none;"></iframe>
</body>
<script>
$("#frame").attr("src", "路徑?time=" + new Date().getTime()).load(function(){
 // 獲取iframe標(biāo)簽的值并進(jìn)行獲取,顯示到頁面
 $("#show").append("[data: " + $($("#frame").get(0).contentDocument).find("body").text()+ " ]");
});
</script>

方法五:

HTML5中websocket可以進(jìn)行跨域的訪問;

創(chuàng)建一個(gè)websocket對(duì)象:

復(fù)制代碼 代碼如下:
var ws = new WebSocket(url);

主要處理的事件類型有(onopen,onclose,onmessage,onerror);

例如:

ws.onopen = function(){
console.log("open");
// 向后臺(tái)發(fā)送數(shù)據(jù)
ws.send("open");
}

后臺(tái)可以是java,php,nodejs等,對(duì)數(shù)據(jù)處理用時(shí)間onmessage事件對(duì)返回的值進(jìn)行前端處理。

ws.onmessage = function(eve){
console.log(eve.data);
}

希望本文所述對(duì)大家的javascript程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Javascript 遍歷對(duì)象中的子對(duì)象

    Javascript 遍歷對(duì)象中的子對(duì)象

    昨天同事問我一個(gè)問題:“有一個(gè)JSON對(duì)象,其中有若干個(gè)子對(duì)象,如何遍歷這個(gè)對(duì)象中的子對(duì)象?”
    2009-07-07
  • 刪除table表格行的實(shí)例講解

    刪除table表格行的實(shí)例講解

    下面小編就為大家?guī)硪黄獎(jiǎng)h除table表格行的實(shí)例講解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09
  • uniapp中vuex的應(yīng)用使用步驟

    uniapp中vuex的應(yīng)用使用步驟

    Vuex是一個(gè)專為Vue.js應(yīng)用程序開發(fā)的狀態(tài)管理模式,它采用集中式存儲(chǔ)管理應(yīng)用的所有組件的狀態(tài),并以相應(yīng)的規(guī)則保證狀態(tài)以一種可預(yù)測(cè)的方式發(fā)生變化,下面這篇文章主要給大家介紹了關(guān)于uniapp中vuex的應(yīng)用使用,需要的朋友可以參考下
    2022-08-08
  • 元素綁定click點(diǎn)擊事件方法

    元素綁定click點(diǎn)擊事件方法

    當(dāng)點(diǎn)擊元素時(shí),會(huì)發(fā)生 click 事件。當(dāng)鼠標(biāo)指針停留在元素上方,然后按下并松開鼠標(biāo)左鍵時(shí),就會(huì)發(fā)生一次 click。click() 方法觸發(fā) click 事件,或規(guī)定當(dāng)發(fā)生 click 事件時(shí)運(yùn)行的函數(shù)。
    2015-06-06
  • moment.js使用超詳細(xì)教程

    moment.js使用超詳細(xì)教程

    Moment.js是一個(gè)輕量級(jí)的JavaScript時(shí)間庫,它方便了日常開發(fā)中對(duì)時(shí)間的操作,提高了開發(fā)效率下,本文給大家介紹moment.js使用超詳細(xì)教程,感興趣的朋友跟隨小編一起看看吧
    2023-10-10
  • JavaScript實(shí)現(xiàn)內(nèi)容滾動(dòng)與導(dǎo)航標(biāo)簽互動(dòng)關(guān)聯(lián)方案

    JavaScript實(shí)現(xiàn)內(nèi)容滾動(dòng)與導(dǎo)航標(biāo)簽互動(dòng)關(guān)聯(lián)方案

    這篇文章主要介紹了JavaScript實(shí)現(xiàn)內(nèi)容滾動(dòng)與導(dǎo)航標(biāo)簽互動(dòng)關(guān)聯(lián)方案,主要根據(jù)滾動(dòng)左側(cè)內(nèi)容,關(guān)聯(lián)激活右側(cè)導(dǎo)航節(jié)點(diǎn)展開相應(yīng)介紹,需要的小伙伴可以參考一下
    2022-06-06
  • javascript canvas時(shí)鐘模擬器

    javascript canvas時(shí)鐘模擬器

    這篇文章主要為大家詳細(xì)介紹了javascript canvas時(shí)鐘模擬器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • JS判斷傳入函數(shù)的參數(shù)是否為空(函數(shù)參數(shù)是否傳遞)

    JS判斷傳入函數(shù)的參數(shù)是否為空(函數(shù)參數(shù)是否傳遞)

    這篇文章主要介紹了JS判斷傳入函數(shù)的參數(shù)是否為空(函數(shù)參數(shù)是否傳遞),需要的朋友可以參考下
    2023-05-05
  • Bootstrap柵格系統(tǒng)學(xué)習(xí)筆記

    Bootstrap柵格系統(tǒng)學(xué)習(xí)筆記

    這篇文章主要為大家詳細(xì)介紹了Bootstrap柵格系統(tǒng)學(xué)習(xí)筆記,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • 在表單提交前進(jìn)行驗(yàn)證的幾種方式整理

    在表單提交前進(jìn)行驗(yàn)證的幾種方式整理

    為了減輕后臺(tái)壓力,可以利用JavaScript在表單提交前對(duì)表單數(shù)據(jù)進(jìn)行驗(yàn)證,本文整理了常用的幾種方式,有需求的朋友可以參考下
    2013-07-07

最新評(píng)論

临沭县| 潢川县| 宜春市| 秭归县| 丁青县| 河曲县| 太仓市| 木兰县| 海丰县| 达尔| 集贤县| 南昌市| 成武县| 浠水县| 临海市| 普宁市| 恩施市| 鄂伦春自治旗| 富阳市| 舒兰市| 通城县| 苏州市| 乌兰县| 安达市| 江门市| 昔阳县| 咸丰县| 陕西省| 台南市| 韶山市| 安塞县| 吕梁市| 平顶山市| 开远市| 闽侯县| 中卫市| 北京市| 长治市| 玉田县| 清河县| 卢龙县|