zoukankan      html  css  js  c++  java
  • Jquery(12)Jquery Ajax跨域访问

    一、同源策略

    二、跨域的集中方法:

    1、服务器端发送请求,服务器作为中继代理(此方法不理解)

    2、iframe

    3、script标签

      通过动过动态生成script标签,并将src指向目标源的方式(img标签同样具有src属性,用img实现不行吗?)

    原生实现方式示例:

    var url="www.xxx.baidu.com/aa.js",
    scriptTag=document.createElement("script");
    scriptTag.src=url;
    document.getElementByTagName("head")[0].appendChild(scriptTag);
    
    function showSth(data){
      alert(data.a);
    }
    ////////////aa.js
    var aa={"a":"A"};
    showSth(aa);

    三、jsonp:

    1、客户端

    使用script标签实现跨域访问、可在url中指定回调函数、获取json数据并在指定的回调函数中执行

    jQuery实现jsonp

    //$.getJSON
    var url="wwwa.xxx.baidu.com/aa.js?callback=?"//使用?作为回调函数名,jquey会自动生成随机名替换?号。
    $.getJSON(url,function(jsoon){
      alert(json.name+json.Email);
    });
    
    //$.ajax;
    var url=www.xxx.baidu.com/aa.asmx?code=xx
    $.ajax({
      url: url,
      dataType: jsonp,
       jsonp:”callback”,//传递给请求处理程序的参数名,用来获取jsonp回调函数名(默认为“callback”,自动在URL中加上callback=?参数)
       jsonpCallback:”GetUser”,//自定义的jsonp回调函数名(默认为jquery自动生成的随机函数名),此参数通常不用设置
      success:function(json){
        alert(json.name+json.Email);
      }
    });

    jQuery 只支持get方式的jsonp实现

    jsonp的缺点:如果返回的数据格式有问题或返回失败了,并不会报错。

    2、服务端

    string jsoncallback = context.Request["callback"]; //如果不指定jsoncallback参数名,则返回随机函数名。
    string jsonp=jsoncallback+"("+ new JavaScriptSerializer(new {Name="a",Email="B"})+")"
    context.Response.ContentType = "text/plain";
    context.Response.Write(jsonp);
  • 相关阅读:
    chrome调试Android webview页面
    Ractive 的 一些认识
    backbone的一些认识
    关于Maven打包(Jar)时文件过滤的正确做法
    网页中实现微信登录(OAuth)的不完整记录
    将项目发布到Maven中央仓库时关于GPG的一些操作日志
    记录一下自己在 eclipse 中使用的 javadoc 模板
    记录一下MySQL的表分区常用操作
    在H5 App中实现自定义Token的注意事项
    再来复习一下Javascript中关于数组和对象的常用方法
  • 原文地址:https://www.cnblogs.com/springsnow/p/9461758.html
Copyright © 2011-2022 走看看