zoukankan      html  css  js  c++  java
  • 有关ajax跨域问题

    前言


    JQuery ajax支持get方式的跨域,采用了jsonp来完成。完成跨域请求的有两种方式实现。一种是使用Jquery ajax最底层的Api实现跨域的请求,而另一种则是JQuery ajax的高级装。

    使用Jquery ajax方式


    $.ajax({
        url:'http://www.mysite.com/demo.do',  // 跨域URL
        type:'get',
        async:false,
        dataType:'jsonp',
        jsonp: 'jsoncallback', //默认callback
        data: mydata, 
        time:5000,
        beforeSend:function(){
          //jsonp 方式此方法不被触发。原因可能是dataType如果指定为jsonp的话,就已经不是ajax事件了
        },
        success:function(data){
             //客户端jquery预先定义好的callback函数,成功获取跨域服务器上的json数据后,会动态执行这个callback函数 
           if(json.actionErrors.length!=0){ 
                 alert(json.actionErrors); 
            } 
            genDynamicContent(qsData,type,json); 
         },
         complete: function(XMLHttpRequest, textStatus){ 
               $.unblockUI({ fadeOut: 10 }); 
         }, 
         error: function(xhr){ 
               //jsonp 方式此方法不被触发
               //请求出错处理 
               alert("请求出错(请检查相关度网络状况.)"); 
         }
     });
    
    

    使用JQuery getJSO方式


    $.getJSON("请求的路径=?参数", 
           function(json){ //返回的结果
             if(json.属性名==值){ 
                // 执行代码 
           } 
    });
    
    

    Jsonp的基本原理就是:动态的添加一个一致的。Jsonp是一种脚本的注入(Script InJection)行为,所以,它会有一定的安全性的问题。

    同时需要注意Jsonp是不支持post跨域请求的。

  • 相关阅读:
    面向对象、构造函数的区别
    写一个function,清除字符串前后的空格。(兼容所有浏览器)
    两个DIV高度自适应方法(左右两个DIV高度一样)
    js数组去重
    input框处理删除小图标的功能
    查找显示高亮
    JSON.parse()和JSON.stringify()
    jquery封装
    怎么理解HTML语义化
    html5语义化标签
  • 原文地址:https://www.cnblogs.com/ZengJiaLin/p/11130718.html
Copyright © 2011-2022 走看看