JSONP(全称:JSON with padding)是一种跨域请求的方法,它允许在不受限制地从一个域名获取数据并在另一个域名下使用该数据。
JSONP 的原理是通过动态创建 script 标签来实现。在客户端向服务器发送请求时,服务器返回 JSON 数据,并将其封装到一个函数调用中。然后客户端会将这个函数定义在当前页面中,并将函数名作为参数传递给服务器。服务器在返回数据时,将 JSON 数据作为实参传递给客户端指定的函数,并将其封装在一个 script 标签中返回。
例如,客户端发出如下请求:
<script src="http://example.com/data?callback=handleData"></script>
其中 callback 参数指定回调函数的名称,服务器会将数据封装成以下形式返回给客户端:
handleData({"name": "小明", "age": 30})
此时客户端就会调用 handleData 函数,并将数据作为参数传入函数中。
需要注意的是,由于 JSONP 是通过 script 标签获取数据的,因此只能获取数据,不能进行 POST 请求。此外,JSONP 请求不是真正的 AJAX 请求,因为它使用的是 script 标签而不是 XMLHttpRequest 对象。