码迷,mamicode.com
首页 > 其他好文 > 详细

一个简单的跨域问题

时间:2015-01-07 12:28:24      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:

  在业务中有需要到跨域的地方,然后简单的学习了一下利用jsonp解决跨域问题:

  首先是跨域的原理:因为浏览器的限制,限制不能跨域ajax请求。

    方式:首先在客户端注册一个callback, 然后把callback的名字传给服务器。此时,服务器先生成 json 数据。然后以 javascript 语法的方式,生成一个function , function 名字就是传递上来的参数 jsonp.最后将 json 数据直接以入参的方式,放置到 function 中,这样就生成了一段 js 语法的文档,返回给客户端。客户端浏览器,解析script标签,并执行返回的 javascript 文档,此时数据作为参数,传入到了客户端预先定义好的 callback 函数里.(动态执行回调函数)

  简单例子:test.html

<html>
    <body></body>
    <script src="jquery.js"></script>
    <script>
        function jqueryAjax(){
            $.ajax({
                type:"GET",
                data:{data:1},
                url:"http://test..../test.php",
                dataType:"jsonp",
                jsonp:callback,
                success:function(result){
                    alert(result);
                }
            })
        }
        jqueryAjax();
    </script>
</html>

  然后是另一个域下的后台返回参数,使用PHP

 1 <?php
 2     $callback = isset($_GET[‘callback‘]) ? $_GET[‘callback‘] : ‘‘;
 3     $json = ‘‘;
 4 
 5     $arr = array();
 6     $json = json_encode($arr);//转成json数组
 7     if (!empty($callback)) {
 8         $json = $callback . ‘(‘ . $json . ‘)‘;  //注意这里的格式
 9     }
10     echo $json;
11 ?>        

 

一个简单的跨域问题

标签:

原文地址:http://www.cnblogs.com/lyafeng/p/4207859.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!