搜索

首页  >  问答  >  正文

javascript - 请教一下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的回调函数是怎么回事,如果您知道,请您不吝赐教,谢谢!

阿神阿神2895 天前333

全部回复(3)我来回复

  • PHPz

    PHPz2017-04-10 15:33:37

    jsonp 只是script跨域特性利用
    http://www.cnblogs.com/dowinning/archive/2012/04/19/json-jsonp-jquery....

    回复
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-10 15:33:37

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

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

    回复
    0
  • PHPz

    PHPz2017-04-10 15:33:37

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

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

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

    回复
    0
  • 取消回复