一尘不染

JavaScript JSON和JSONP有什么区别?

javascript

明智地设置格式,明智地使用文件类型以及明智地使用实用程序?


阅读 387

收藏
2020-04-25

共1个答案

一尘不染

JSONP是带填充的JSON,也就是说,您将字符串放在开头,并在其周围加上一对括号。例如:

//JSON
{"name":"stackoverflow","id":5}
//JSONP
func({"name":"stackoverflow","id":5});

结果是您可以将JSON作为脚本文件加载。如果您之前设置了一个名为的函数func,那么在脚本文件加载完成后,将使用一个参数(即JSON数据)调用该函数。这通常用于允许带有JSON数据的跨站点AJAX。如果您知道example.com正在提供类似于上面给出的JSONP示例的JSON文件,那么即使您不在example.com域上,也可以使用类似的代码来检索它:

function func(json){
  alert(json.name);
}
var elm = document.createElement("script");
elm.setAttribute("type", "text/javascript");
elm.src = "http://example.com/jsonp";
document.body.appendChild(elm);
2020-04-25