说说JSON和JSONP 也许你会豁然开朗


JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。

JSONP(JSON with Padding)是JSON的一种“使用模式”,是一种非官方的跨域数据交互协议。由于同源策略,一般来说,Ajax只能请求与当前页面域名相同的服务器的资源。JSONP是一种方法,可以绕过这个限制,从其他服务器加载数据。JSONP请求的URL包含一个callback参数,其值是在客户端定义的函数名。服务器在返回数据时,会把这个函数名作为数据包装起来。这样,客户端在接收到数据后,可以立即调用这个函数,并处理其中的数据。

简而言之,JSON是一种数据格式,而JSONP是一种使用JSON进行跨域数据交换的方法。JSONP通过在客户端定义一个函数,并将这个函数名作为参数传递给服务器,服务器返回的数据会作为这个函数的参数,从而实现跨域数据访问。希望这能帮助你更清晰地理解JSON和JSONP。