(跨域问题《二》jsonp)

来源:互联网 发布:淘宝上高夫假货多吗 编辑:程序博客网 时间:2024/06/06 07:48

Jsonp(JSON with Padding) 是 json 的一种”使用模式”,可以让网页从别的域名(网站)那获取资料,即跨域读取数据。
客户端代码:

<!DOCTYPE html><html><head><meta charset="utf-8"><title>JSONP 实例</title></head><body>    <div id="divCustomers"></div>    <script type="text/javascript">      function callbackFunction(result, methodName)        {            var html = '<ul>';            for(var i = 0; i < result.length; i++)            {                html += '<li>' + result[i] + '</li>';            }            html += '</ul>';            document.getElementById('divCustomers').innerHTML = html;        }</script><script type="text/javascript" src="http://119.29.176.18/enter/jsonp.php?jsoncallback=callbackFunction"></script></body></html>

服务端代码

<?phpheader('Content-type: application/json');//获取回调函数名$jsoncallback = htmlspecialchars($_REQUEST ['jsoncallback']);//json数据$json_data = '["customername1","customername2"]';//输出jsonp格式的数据echo $jsoncallback . "(" . $json_data . ")";?>

jQuery进行jsonp操作:

<!DOCTYPE html><html><head>    <meta charset="utf-8">    <title>JSONP 实例</title>    <script src="http://cdn.static.runoob.com/libs/jquery/1.8.3/jquery.js"></script>    </head><body><div id="divCustomers"></div><script>$.getJSON("http://119.29.176.18/enter/jsonp.php?jsoncallback=?", function(data) {    var html = '<ul>';    for(var i = 0; i < data.length; i++)    {        html += '<li>' + data[i] + '</li>';    }    html += '</ul>';    $('#divCustomers').html(html); });</script></body></html>

jQery会自动生成一个全局函数来替换jsoncallback=?中的问号,之后收到的数据又会自动销毁,实际上就是一个临时代理的作用,$.getJSON()方法会自动判断是否跨域,不跨域的话,就调用普通的ajax 方法;跨域的话,则会以异步加载文件的形式来调用jsonp的回调函数。
优缺点:
优点:
(1)不受同源策略限制
(2)向后兼容性更好,在更古老浏览器都可以运行,不需要XMLHttpRequest或ActiveX的支持
缺点:
(1)只支持GET请求
(2)只支持跨域http请求,不能解决不同域的两个页面如何进行js调用的问题
(3)判断jsonp的请求是否失败不 容易,大多数框架实现都是结合超时时间来判定。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小腿肚子聚筋了怎么办 6个月婴儿腿弯怎么办 胳膊抻筋拉伤了怎么办 宝宝抻着了怎么办妙招 拎东西胳膊抻了怎么办 小臂一用力筋疼怎么办 摔破胳膊很痛怎么办 胳膊的筋扭伤了怎么办 小孩胳膊抻筋了怎么办 肩膀抻着了怎么办妙招 右边肩膀抻着了怎么办 胳膊因劳累很痛怎么办 宝宝胳膊摔了疼怎么办 宝宝胳膊抻筋了怎么办 孕妇胳膊筋伤了怎么办 刚进公司就怀孕怎么办 撞到胳膊麻筋了怎么办 腰抻了怎么办多久能好 腰突然抻了一下怎么办 干活抻筋了 很疼怎么办 胳膊抻筋一动就疼怎么办 肩膀受风了很疼怎么办 开空调受风了怎么办 胳膊受风了疼怎么办 孩子胳膊抻筋了怎么办 胳膊被风吹了疼怎么办 月子里胳膊受风怎么办 受风了胳膊酸痛怎么办 胳膊受风了在家怎么办 手臂烧伤手肿了怎么办 胳膊里的筋疼怎么办 3岁胳膊背筋了怎么办 左胳膊筋一直疼怎么办 手臂突然筋扭了怎么办 胳膊扭了肿了怎么办 胖人走路磨大腿怎么办 脖子上长了个淋巴结怎么办 面部危险三角区长痘痘怎么办 儿童脖子上有淋巴结节怎么办 左侧颈根部淋巴结肿大怎么办 人的三角区肿了怎么办