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);
  • 相关阅读:
    开发金额处理BigDecimal
    Strtuts2.3.15 bug ,可以远程执行命令
    java 获取properies资源信息
    获取程序运行所在ip
    JVM虚拟机内存和String 类型深入
    数据库表结构上下文
    properties配置文件实现DBManager
    查询功能的包装类
    通过反射生成类的utils
    jdbc反射操作
  • 原文地址:https://www.cnblogs.com/springsnow/p/9461758.html
Copyright © 2011-2022 走看看