ajax跨域的几种实现方式

什么是跨域

同协议,同ip,同端口视为一个域,当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域。

原生态ajax跨域实现

通过动态创建script标签通过src发送跨域地址,通过定义function XXX()函数由服务器响应的内容调用,接收服务器响应的数据。注意,XXX()函数名需要与服务器返回的函数名保持一致。

    <script type="text/javascript">
       //动态创建script标签发出去的请求是跨域请求,默认的请求方式是get。
        var script = document.createElement('script');
        //请求数据地址,?后面可以接传递的参数
        script.src = 'http://tom.com/data.php?flag=1&name=get';
        var head = document.getElementsByTagName('head')[0];
        head.appendChild(script);
        // 这里的response函数实际上由服务器响应的内容调用
         function response(data){
            console.log(data);
        }
    </script>

服务器响应

   <?php
   //输出的response方法名需跟前端保持一致
   echo "response(123)";
   //也可以传个数组
   echo "response(".json_encode($arr).")";

jQuery实现ajax跨域请求

在jQuery实现ajax跨域请求中,请求的类型type只能为get,dataType只能为’jsonp’,jsonp表示跨域请求数据。

//引入jQuery包
    <script type="text/javascript" src="./jquery.js"></script>
    //jQuery代码
    <script type="text/javascript">
        $(function(){
        //点击发送请求
            $("#btn").click(function(){
                $.ajax({
                    type:'get',//跨域请求的type默认为get请求
                    url:'www.tie.com/jsonp.php',//请求的地址
                    dataType:'jsonp',//jsonp表示跨域请求数据
                    jsonp:'cb',//jsonp属性的作用就是自定义参数名字(callback=abc 这里的名字指的是等号前面的键,后端根据这个键获取方法名,jquery的默认参数名称是callback)
                    jsonpCallback:'abc',//这个属性的作用就是自定义回调函数的名字(callback=abc ,这里的名字指的是等号后面的值)
                    data:{},//需要传递给后端的值
                    //回调函数,接收后端响应的数据
                    success:function(data){
                        console.log(data);
                    },
                    //异常处理
                    error:function(data){
                        console.dir(data);
                        console.log('error');
                    }
                });
            });
        });
    </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值