JavaScript: 如何创建 JSONP?

JSONP(JSON with Padding)是一种用于跨域数据请求的技术。由于浏览器的同源策略,JavaScript 默认不能直接访问不同源的数据。但通过使用 JSONP 技术,可以实现在前端页面中向其他域名发送请求,并获取数据。

实现原理

JSONP 的实现原理是利用 <script> 标签的跨域特性。我们可以通过动态创建一个 <script> 标签来加载需要获取的数据。被请求的服务器会将数据包装成一个函数调用,并返回给客户端。客户端接收到响应后,就可以执行这个函数,从而取得数据。

创建 JSONP

下面是一个简单的创建 JSONP 的示例:

-------- ---------- --------- -
  ----- ------ - --------------------------------
  ---------- - --- - ------------ - --------
  ---------------------------------
-

-------- ---------------- -
  -----------------
-

------------------------------------- -------------

在上面的代码中,我们定义了一个 jsonp 函数,它接收两个参数:URL 和回调函数的名称。该函数动态创建了一个 <script> 标签,并将 URL 和回调函数作为 GET 参数拼接到 URL 中。然后将该标签添加到文档的 <body> 元素中。被请求的服务器会将数据包装成一个函数调用,并将其返回给客户端。客户端会在全局作用域中创建一个名为 handleData 的函数,该函数接收服务器返回的数据作为参数。

注意事项

  • 回调函数必须在全局作用域中定义,否则服务器无法正确地调用它。
  • 服务器端需要将数据包装成一个函数调用,并将其返回给客户端。通常情况下,函数名由客户端指定,以便在获取数据后立即执行回调函数。
  • JSONP 只支持 GET 请求。

结论

JSONP 是一种非常有用的技术,在前端开发中被广泛应用。通过动态创建 <script> 标签,我们可以轻松地向其他域名发送请求,并获取数据。虽然它具有某些限制,但是 JSONP 在一些特定的场景中仍然是最好的选择。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/25536