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

詳細(xì)解密jsonp跨域請(qǐng)求

 更新時(shí)間:2015年04月15日 09:52:10   投稿:hebedich  
當(dāng)進(jìn)行一些比較深入的前端編程的時(shí)候,不可避免地需要進(jìn)行跨域操作,JSONP跨域GET請(qǐng)求是一個(gè)常用的解決方案,下面我們來(lái)看一下JSONP跨域是如何實(shí)現(xiàn)的,并且探討下JSONP跨域的原理。

1.什么是跨域請(qǐng)求:

服務(wù)器A上的一個(gè)頁(yè)面,要請(qǐng)求服務(wù)器B上的一個(gè)處理程序,這就叫做跨域請(qǐng)求

本次的測(cè)試頁(yè)面為:

處理程序kimhandler.ashx,如下:

%@ WebHandler Language="C#" Class="KimHandler" %>

using System;
using System.Web;

public class KimHandler : IHttpHandler {
  
  public void ProcessRequest (HttpContext context)
  {
    string msg = "{\"name\":\"kim\",\"gender\":\"男\(zhòng)",\"age\":24}";
    context.Response.Write(msg);
  }
 
  public bool IsReusable {
    get {
      return false;
    }
  }
}

另一張?zhí)幚沓绦騢andler.ashx如下:

<%@ WebHandler Language="C#" Class="Handler" %>

using System;
using System.Web;

public class Handler : IHttpHandler {
  
  public void ProcessRequest (HttpContext context)
  {
    string callbackName = context.Request.Params["callbackFun"];
    string msg = callbackName+ "({\"name\":\"kim\",\"age\":\"18\"});";
    context.Response.Write(msg);
  }
 
  public bool IsReusable {
    get {
      return false;
    }
  }

}

2.Ajax無(wú)法實(shí)現(xiàn)跨域請(qǐng)求

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  <title></title>
  <script>
    var requestUrl = "http://qxw1192430265.my3w.com/kimhandler.ashx";
    window.onload = function () {
      document.getElementById("btnAjax").onclick = function() {
        var xhr = new XMLHttpRequest();
        xhr.open("get", requestUrl, true);
        xhr.setRequestHeader("If-Modified-Since", 0);
        xhr.onreadystatechange = function () {
          if (xhr.readyState == 4 && xhr.status == 200) {
            var res = xhr.responseText;
            alert(res);
          }
        }
        xhr.send(null);
      }
    }
  </script>
</head>
<body>
  <input type="button" id="btnAjax" value="點(diǎn)擊" />
</body>
</html>

查看監(jiān)視器,發(fā)現(xiàn)沒(méi)有返回任何請(qǐng)求報(bào)文體

3.使用script標(biāo)簽,可以實(shí)現(xiàn)跨域請(qǐng)求

測(cè)試代碼如下:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  <title></title>
  <script src="http://qxw1192430265.my3w.com/kimhandler.ashx"></script>
</head>
<body>

</body>
</html>

查看監(jiān)視器,可以看到,有返回請(qǐng)求報(bào)文體

在用json格式看下

4.使用js方式,在瀏覽器端,讀取響應(yīng)是數(shù)據(jù)

測(cè)試代碼如下,注意換了一個(gè)處理程序

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  <title></title>
  <script>
    function getData(data) {
      for (var key in data) {
        alert(data[key]);
      }
    }
  </script>
  <script src="http://qxw1192430265.my3w.com/handler.ashx?callbackFun=getData"></script>
 </head>
<body>
  
</body>
</html>

通過(guò)后臺(tái)代碼,可知

然后在監(jiān)視器上看看

發(fā)現(xiàn)在瀏覽器端,彈出了kim還有18

5.使用Jq來(lái)實(shí)現(xiàn)跨域請(qǐng)求(內(nèi)部原理就是為我們創(chuàng)建了一個(gè)script標(biāo)簽)

代碼如下

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  <title></title>
  <script src="jquery-1.9.0.js"></script>
  <script>
    var requestUrl = "http://qxw1192430265.my3w.com/handler.ashx";
    window.onload = function () {
      document.getElementById("btnJq").onclick = function() {
        $.ajax(requestUrl, {
          type: "get", //請(qǐng)求方式
          dataType: "jsonp", //數(shù)據(jù)發(fā)送類(lèi)型
          jsonp: "callbackFun", //服務(wù)器端接收的參數(shù)
          jsonpCallback: "fun", //js處理方法
          success: function () {
            alert("成功");
          }
        });
      }
    }

    function fun(data) {
      for (var key in data) {
        alert(data[key]);
      }
    }
  </script>
</head>
<body>
  <input type="button" id="btnJq" value="Jq按鈕" />
</body>
</html>

點(diǎn)擊按鈕后,可以看到效果,再看下監(jiān)視器


以上所述就是本文的全部?jī)?nèi)容了,希望大家能夠喜歡。

相關(guān)文章

  • js復(fù)制文本到粘貼板(Clipboard.writeText())

    js復(fù)制文本到粘貼板(Clipboard.writeText())

    這篇文章主要介紹了js復(fù)制文本到粘貼板(Clipboard.writeText()),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • JavaScript日期時(shí)間與時(shí)間戳的轉(zhuǎn)換函數(shù)分享

    JavaScript日期時(shí)間與時(shí)間戳的轉(zhuǎn)換函數(shù)分享

    這篇文章主要介紹了JavaScript日期時(shí)間與時(shí)間戳的轉(zhuǎn)換函數(shù)分享,本文給出兩個(gè)函數(shù)實(shí)現(xiàn)日期時(shí)間和時(shí)間戳間的轉(zhuǎn)換,需要的朋友可以參考下
    2015-01-01
  • 基于JS實(shí)現(xiàn)01支付后的10秒倒計(jì)時(shí)

    基于JS實(shí)現(xiàn)01支付后的10秒倒計(jì)時(shí)

    這是一個(gè)通過(guò)js實(shí)現(xiàn)的支付后的頁(yè)面,點(diǎn)擊支付會(huì)跳出一個(gè)彈窗,提示你是否要確定支付,確定后進(jìn)入付后界面,該頁(yè)面有著10秒倒計(jì)時(shí),計(jì)時(shí)結(jié)束后便會(huì)返回原界面,也可以選擇立刻返回,來(lái)返回主頁(yè)面,這篇文章主要介紹了基于JS實(shí)現(xiàn)01支付后的10秒倒計(jì)時(shí),需要的朋友可以參考下
    2023-03-03
  • JavaScript人臉識(shí)別技術(shù)及臉部識(shí)別JavaScript類(lèi)庫(kù)Tracking.js

    JavaScript人臉識(shí)別技術(shù)及臉部識(shí)別JavaScript類(lèi)庫(kù)Tracking.js

    人臉識(shí)別的JavaScript程序包是Face Detection,它是由Jay Salvat和Liu Liu開(kāi)發(fā)的。它是一個(gè)標(biāo)準(zhǔn)的jQuery插件,通過(guò)對(duì)提供的圖片進(jìn)行分析,返回所有找到的臉部圖像的坐標(biāo),感興趣的朋友跟著小編一起學(xué)習(xí)js人臉識(shí)別技術(shù)及臉部識(shí)別JavaScript類(lèi)庫(kù)Tracking.js吧
    2015-09-09
  • 深入理解ES6之?dāng)?shù)據(jù)解構(gòu)的用法

    深入理解ES6之?dāng)?shù)據(jù)解構(gòu)的用法

    本文介紹了深入理解ES6之?dāng)?shù)據(jù)解構(gòu)的用法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • javascript Three.js創(chuàng)建文字初體驗(yàn)

    javascript Three.js創(chuàng)建文字初體驗(yàn)

    這篇文章主要為大家介紹了Three.js創(chuàng)建文字初體驗(yàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-11-11
  • JavaScript?canvas實(shí)現(xiàn)水球加載動(dòng)畫(huà)

    JavaScript?canvas實(shí)現(xiàn)水球加載動(dòng)畫(huà)

    這篇文章主要為大家詳細(xì)介紹了JavaScript?canvas實(shí)現(xiàn)水球加載動(dòng)畫(huà),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • 微信小程序排坑指南詳解

    微信小程序排坑指南詳解

    這篇文章主要為大家詳細(xì)介紹了微信小程序排坑指南,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • js實(shí)現(xiàn)鼠標(biāo)感應(yīng)圖片展示的方法

    js實(shí)現(xiàn)鼠標(biāo)感應(yīng)圖片展示的方法

    這篇文章主要介紹了js實(shí)現(xiàn)鼠標(biāo)感應(yīng)圖片展示的方法,實(shí)例分析了javascript鼠標(biāo)事件及樣式的操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-02-02
  • js+html5實(shí)現(xiàn)手機(jī)九宮格密碼解鎖功能

    js+html5實(shí)現(xiàn)手機(jī)九宮格密碼解鎖功能

    這篇文章主要為大家詳細(xì)介紹了js+html5實(shí)現(xiàn)手機(jī)九宮格密碼解鎖功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-07-07

最新評(píng)論

乌兰浩特市| 英超| 肥西县| 蒙城县| 枣庄市| 元氏县| 方城县| 吐鲁番市| 光山县| 同德县| 石首市| 应用必备| 海淀区| 攀枝花市| 肃宁县| 淮北市| 临沭县| 句容市| 梅河口市| 宁安市| 西昌市| 洪江市| 沭阳县| 余庆县| 柘荣县| 策勒县| 吕梁市| 屯昌县| 芜湖县| 西华县| 衡阳市| 乐亭县| 巴林左旗| 双柏县| 普兰店市| 花垣县| 南漳县| 元江| 集贤县| 宿松县| 达州市|