前端JavaScript 2015-01-14
json 和 jsonp的区别:
web开发中常要用到ajax来解决向服务端异步请求动态数据,数据传递方式有2种:json和xml。其中json到目前为止被推崇或者说是首选的数据传递方案。但是json不能解决跨域的问题(json只能请求服务器本地上的资源,如服务器在192.168.1.12上,那么json只能请求192.168.1.12服务器上的资源,至于远程请求其他服务器的资源,就办不到了)。jsonp能解决这个跨域问题。
Jsonp是如何产生的:
1、ajax直接请求普通文件存在跨域或无权访问的问题,无论是静态页面,动态页面,web服务还是wcf服务,只要存在跨域请求,一律不准。
2、web页面上调用js文件时则不受是否跨域的影响(即只是带有"src"这个属性的标签都能请求跨域的资源。如<script>,<img>,<a>,<iframe>等)
3、当客户端向服务端发送请求了,服务端要把数据装进js格式的文件里(文件的后缀名为json),供客户端调用和进一步处理;
4、 客户端拿到js格式的文件后,分析js处理json数据并展示
5、为了方便于客户端跨域向服务端请求数据,慢慢形成了一种非正式传输协议(允许客户端传递一个callback参数给服务端,服务器会把这个callback参数的值作为回调函数名来处理JSON数据),这样客户端就可以随意定制自己的函数来自动处理返回数据了。
(未完成,待续)