jsonp是什么?

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

  • 为什么我们从不同的域(网站)访问数据需要一个特殊的技术(JSONP )呢?这是因为同源策略。

  • 同源策略,它是由Netscape提出的一个著名的安全策略,现在所有支持JavaScript 的浏览器都会使用这个策略。

JSONP 应用

  1. 服务端JSONP格式数据
<?php
header('Content-type: application/json');
//获取回调函数名
$jsoncallback = htmlspecialchars($_REQUEST ['jsoncallback']);
//json数据
$json_data = '["customername1","customername2"]';
//输出jsonp格式的数据
echo $jsoncallback . "(" . $json_data . ")";
?>
  1. 客户端页面完整代码
<!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://www.runoob.com/try/ajax/jsonp.php?jsoncallback=callbackFunction"></script>
</body>
</html>
  1. 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://www.runoob.com/try/ajax/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>
  1. 自测代码
<?php
header('Content-type: application/json');
//获取回调函数名
$jsoncallback = htmlspecialchars($_REQUEST ['jsoncallback']);
//json数据
$json_data = '["customername1","customername2"]';
//输出jsonp格式的数据
echo $jsoncallback . "(" . $json_data . ")";
?>
<!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://www.php.test/jsonp/jsonp.php?jsoncallback=callbackFunction"></script>
</body>
</html>
<!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://www.php.test/jsonp/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>

最新文章

  1. C#正则表达式判断输入日期格式是否正确
  2. JS双月份显示联动效果,点击日期浮出消息提示
  3. 【MySQL】过滤后的结果集较大,用LIMIT查询分页记录,查询效率不理想
  4. [POJ 2356] Find a multiple
  5. CoutDownLatch 多线程同步辅助类
  6. jquery与ajax的应用
  7. linux ssh连接不自动断开
  8. 网页设计——2. html入门
  9. supervisor使用,配置和安装(包括监控守护进程httpd,keepalived)
  10. Go 语言条件语句
  11. 状态模式、职责链模式——省去if-else的繁琐结构
  12. Linux 桌面玩家指南:02. 以最简洁的方式打造实用的 Vim 环境
  13. HTML60秒倒计时
  14. 【原创】Python第二章——标识符命名规则
  15. 【网络设备】某防火墙基于IP地址的目的地址转换
  16. 接口的鉴权&amp;响应数据解密
  17. linux下使用软连接之案例二
  18. 第十九篇:不为客户连接创建子进程的并发回射服务器(select实现)
  19. linux make configure make
  20. Discuz常见大问题-如何开启和使用首页四格

热门文章

  1. ElasticSearch 数据建模
  2. jquery动态赋值id与动态取id方法
  3. CCF(元素选择器:50分):字符串+模拟
  4. CVE-2018-2628-WLS Core Components 反序列化
  5. AbstractQueuedSynchronizer之AQS
  6. 翻译:《实用的Python编程》05_02_Classes_encapsulation
  7. Python装饰器(3)
  8. 前后端(PHP)使用AES对称加密
  9. 《逆向工程核心原理》——API HOOK
  10. Linux内核源码分析之setup_arch (四)