php 返回json或者jsonp

接口开发中,现在交互很多时候开始使用json作为交互格式,因为json简单,易看,不像protobuf ,msgpack一样编成了一堆看不懂的小蝌蚪,当然也有他们的好处,速度更快,体积更小,另外也防止别人直接看到内容是啥!

这里要说的是json和jsonp格式的返回,先区分一下两个的不同,json是一种交互格式,它在不跨域的情况中交互,跨域的话,需要其他方式先破解调跨域的问题才能使用,如果不解决跨域的时候,我们这时候可以选择jsonp进行交互!

它俩有啥区别呢,看下格式你就懂了,jsonp是json的一种变种,为了实现跨域请求而生的,并且jsonp只能使用get请求,并且不能带本地客户端的cookie(实际上是浏览器限制不能带的)!

json的格式:{“a”:”b”,”c”:”d”}

jsonp的 格式: callback({“a”:”b”,”c”:”d”})

jsonp就多了callback,这个callback做什么的呢,这个就是页面中根据这个callback这个变量找到回调的函数,请求的时候带着这个,返回的时候也带着,返回后,页面js就调用这个callback,把结果响应到页面中!

jsonp实际上就是利用页面可以引入其它域名下的script的特性实现的!

php 如何让你的方法同时json和jsonp呢,其实很简单,看看代码如下

 

就是根据请求中是否有callback函数来判断的,如果有,我们就组装成jsonp的格式返回,没有,我们就按正常的json返回!callback这个是前端自动添加的(这里说的jquery用法),如果要是自己封装,就自己加上这个参数就行!

url中callback的格式是这样的:url?callback=sfajflajljlfjeoajowejrojofjoajofaojfojafaejfjngne

是key=>value的格式,callback后边一串在页面有这样的方法用于回调!当然你用jquery的话,这些都帮你封装好啦!