JSONP后端返回的回调函数是怎么执行的?

y_57c1af5eb01b9
  • 20

前端代码

<script>
function test(data) {
    console.log(data.name);
}
</script>
<script src="http://127.0.0.1:8088/jsonp?callback=test"></script>

后端返回

res.end('test({"name": "Monkey"})');

以上就实现了JSONP跨域,前端正常打印出了"Monkey"

我的问题是:这个后端返回的字符串函数test是怎么执行的?在前端什么时候、哪里执行的?搞不明白,请大神解答,感谢!

回复
阅读 9.5k
5 个回答

jsonp原理

简单来讲就是

前端调用接口<script src="http://127.0.0.1:8088/jsonp?callback=test"></script>
+后端返回test({"name": "Monkey"})
等同于
<script>test({"name": "Monkey"})</script>

因为script标签请求到的内容会自动执行。

就好像你引用一个jquery.js一样,请求到的也是一段jquery文本内容,请求完毕后就会执行该内容,页面中就有jquery了。

jsonp的原理就是动态加载js,从后端加载过来一段js,如你的test({"name": "Monkey"}),然后执行

放在那里都可以 只要请求到数据就会调用

下面那个script标签执行的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏