JSONP 教程学习笔记
什么是 JSONP
JSONP(JSON with Padding)是一种跨域解决方案,它允许我们在客户端向不同源的服务器请求数据,从而解决AJAX跨域的限制。其原理是通过动态创建script标签,并将远程数据作为回调函数的参数传递给客户端,从而实现数据获取。
具体来说,JSONP通过在请求URL后面添加一个callback参数,该参数的值是一个回调函数的名称,一个服务器就可以返回一段JavaScript代码,以回调函数的形式包裹返回数据。
例如,客户端请求如下URL:
Copy Codehttp://www.example.com/data.php?parameter=1&callback=processData
服务器返回的数据如下:
Copy CodeprocessData({"name":"John", "age":30, "city":"New York"})
客户端定义processData函数,实现对返回数据的处理:
javascriptCopy Codefunction processData(data){
console.log(data.name); // 'John'
console.log(data.age); // 30
console.log(data.city); // 'New York'
}
JSONP使用注意事项
- JSONP只能用于GET请求,不能用于POST、PUT等其他类型的请求。
- 服务器端需要对callback参数的值进行安全性验证,防止XSS攻击。
- callback函数必须定义在客户端代码中,且必须具有全局可见性。
- JSONP不支持服务器端向客户端推送数据。
- JSONP对错误处理不够友好,需要客户端自行处理。
实例代码
htmlCopy Code<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSONP Demo</title>
</head>
<body>
<h1>JSONP Demo</h1>
<script>
function processData(data){
console.log(data.name);
console.log(data.age);
console.log(data.city);
}
var script = document.createElement('script');
script.src = 'http://www.example.com/data.php?parameter=1&callback=processData';
document.body.appendChild(script);
</script>
</body>
</html>
以上代码演示了如何使用JSONP获取远程数据,并将其传递给客户端处理函数。