zoukankan      html  css  js  c++  java
  • 使用jsonp跨域请求

    一、异步对象,不能实现跨域请求

    在站点A中访问站点B的数据:

    站点A代码:

     1     window.onload = function () {
     2             document.getElementById("btnAjax").onclick = doAjax;
     3         }
     4         function doAjax() {
     5             var xhr = new XMLHttpRequest();
     6             xhr.open("get", "http://www.ruanmou.net/C01Target.ashx", true);
     7             xhr.setRequestHeader("If-Modified-Since", "0");
     8             xhr.onreadystatechange = function () {
     9 
    10                 if (xhr.readyState == 4 && xhr.status == 200) {
    11                     var res = xhr.responseText;
    12                     alert(res);
    13                 }
    14             };
    15             xhr.send(null);
    16         }
    <input type="button" value="使用异步请求跨域请求是错的" id="btnAjax" />

    站点B代码:

    C01Target.ashx中:

    1 public void ProcessRequest(HttpContext context)
    2         {
    3             context.Response.ContentType = "text/plain";
    4             context.Response.Write(“hello world”);
    5         }

    二、使用script标签实现跨域请求

    站点A代码:

     <script type="text/javascript" src="http://www.ruanmou.net/C01Target.ashx?callback=showData"></script>
    1  function showData(data) {
    2             for (var key in data) {
    3                 alert(data[key]);
    4             }
    5         }

    站点B代码:

    C01Target.ashx中:

    1 public void ProcessRequest(HttpContext context)
    2         {
    3             string funName = context.Request.Params["callback"];
    4             context.Response.ContentType = "text/plain";
    5             string strDate = funName+"({"name":"Xuj","age":"18"})";//返回数据为json格式
    6             context.Response.Write(strDate);
    7         }

     三、jquery使用jsonp实现跨域请求

    站点A代码:

     1 window.onload = function () {
     2             document.getElementById("btnAjax").onclick = doAjax;
     3         }
     4         function doJq() {
     5             $.ajax("http://www.ruanmou.net/C01Target.ashx"), {
     6                 type: "get",//内部就是创建一个script标签
     7                 jsonp:"callback",//传的参数名,和服务器端一致
     8                 dataType: "jsonp",//指定回调的函数名
     9                 jsonCallback: "showData",
    10                 success: function () {
    11                     alert("11111");
    12                 }
    13             });
    14         }
    1 function showData(data) {
    2             for (var key in data) {
    3                 alert(data[key]);
    4             }
    5         }
  • 相关阅读:
    Python生成验证码
    Django设置
    OpenStack安装后检查流程总结
    利用src.rpm包修改源码后重新制作rpm包
    Python知识点:distutils常用子模块
    libvirt, libvirt-python, libvirtd 关系浅析
    Python知识点: os.popen
    Python知识点: __import__
    修改initrd.img里ko文件的一个小tips
    关于openstack自动化安装的一点思考
  • 原文地址:https://www.cnblogs.com/ruanmou001/p/3674965.html
Copyright © 2011-2022 走看看