请教一下JSONP中的回调函数是怎么回事?

一段简单的JSONP的代码



<script> function show(json){ //函数show alert(json.s); } </script> //wd=web,搜索关键词为web;cb=show,回调函数为show <script src="https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=web&cb=show"> </script> /*src的请求结果为: show({q:"web",p:false,s:["webqq","webqqµÇ½","web of science","web΢ÐÅ","webstorm","webservice","΢² ©","websocket","weblogic","webex"]}); */

W3school对回调函数的定义:
http://www.w3school.com.cn/ajax/ajax_xmlhttprequest_onreadystatechange...

callback 函数是一种以参数形式传递给另一个函数的函数。

结合w3school对回调函数的定义,函数show应该是传递给服务端某个处理程序中的函数的参数,并且由服务端的函数来调用show。
可是JSONP好像是通过src请求资源,然后返回一个函数调用,比如show({json数据})。
我也不知道该怎么表达了,我想不明白JSONP的回调函数是怎么回事,如果您知道,请您不吝赐教,谢谢!

阅读 11.3k
3 个回答

不不不,回调函数不是在服务器端被调用的

客户端把回调函数的名字传送给服务端,
然后服务端生成一段js代码且代码中包含着对回调函数的调用,
然后服务端把这段代码返回给客户端,
然后客户端执行这段代码的过程中调用了回调函数,
然后你就可以在回调函数里面处理数据了
。。。

回调函数没多大作用,说是作用,就是后端接收函数名,然后再返回。

如:Jquery的ajaxjsonp的函数名是可变的。

http://www.zhile.name/14.html

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题