一尘不染

JSON和JSONP有什么区别?

json

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


阅读 262

收藏
2020-07-27

共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-07-27