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

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

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

1.什么是跨域請求:

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

本次的測試頁面為:

處理程序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無法實現(xiàn)跨域請求

<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="點擊" />
</body>
</html>

查看監(jiān)視器,發(fā)現(xiàn)沒有返回任何請求報文體

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

測試代碼如下:

<!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)視器,可以看到,有返回請求報文體

在用json格式看下

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

測試代碼如下,注意換了一個處理程序

<!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>

通過后臺代碼,可知

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

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

5.使用Jq來實現(xiàn)跨域請求(內(nèi)部原理就是為我們創(chuàng)建了一個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", //請求方式
          dataType: "jsonp", //數(shù)據(jù)發(fā)送類型
          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>

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


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

相關(guān)文章

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

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

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

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

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

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

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

    JavaScript人臉識別技術(shù)及臉部識別JavaScript類庫Tracking.js

    人臉識別的JavaScript程序包是Face Detection,它是由Jay Salvat和Liu Liu開發(fā)的。它是一個標(biāo)準(zhǔn)的jQuery插件,通過對提供的圖片進(jìn)行分析,返回所有找到的臉部圖像的坐標(biāo),感興趣的朋友跟著小編一起學(xué)習(xí)js人臉識別技術(shù)及臉部識別JavaScript類庫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)的用法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • javascript Three.js創(chuàng)建文字初體驗

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

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

    JavaScript?canvas實現(xiàn)水球加載動畫

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

    微信小程序排坑指南詳解

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

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

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

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

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

最新評論

巩义市| 鄄城县| 禹城市| 游戏| 体育| 原平市| 鄄城县| 莱西市| 田阳县| 绥德县| 襄汾县| 金乡县| 泽州县| 宁阳县| 津市市| 南华县| 巨野县| 兴海县| 乐都县| 禄丰县| 广汉市| 德江县| 福清市| 石泉县| 昭平县| 屏南县| 吉水县| 涞水县| 新平| 三河市| 北川| 晋宁县| 庆城县| 东乡县| 简阳市| 望奎县| 临高县| 伽师县| 会泽县| 新巴尔虎右旗| 如皋市|