一些api都支持带Callback参数的请求,那到底提供的这个Callback参数有什么用,下面一起来看看。
一般来说,这个Callback参数主要是给Javascript调用API使用的,当get提供了Callback参数后,服务器端在输出内容的时候不是直接输出了,而是将内容放入提供的Callback函数当中返回给请求端。下面来看下最简单的带Callback的api服务器端的代码
1 2 3 4 5 6 7 |
<?php //服务端模拟生成JSON数据 $arr=array('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5); $result=json_encode($arr); //返回带回调函数的结果 $callback=$_GET['callback']; echo $callback."($result)"; |
再举例,如果我们get的网址是这样的
1 |
http://ip-api.com/json/208.80.152.201?callback=my_callback_function |
那么服务器端在返回结果的时候就是这样的
1 |
my_callback_function({"as":"AS4812 China Telecom (Group)","city":"Shanghai","country":"China","countryCode":"CN","isp":"China Telecom","lat":31.0456,"lon":121.3997,"org":"China Telecom Shanghai","query":"58.35.139.178","region":"31","regionName":"Shanghai Shi","status":"success","timezone":"Asia/Shanghai","zip":""} ); |
可以看到,服务器端返回的内容已经不再是我们请求的json结果了,而是一段String字符串。
具体来说,Callback到底作用是什么,那么就要讲到Javascript的特点,就是实时执行。Javascript在浏览器中请求API的时候一般像下面这样
1 2 3 4 5 6 |
<script type="text/javascript"> function my_callback_function(result) { do something } </script> <script type="text/javascript" src="http://ip-api.com/json/208.80.152.201?callback=my_callback_function"></script> |
以上语句执行的时候,浏览器首先加载my_callback_function函数,接着获取API的内容,因为API返回的结果是一个可执行的Javascript函数,所以立即会被浏览器识别并执行,这样就完成了对API返回结果的处理。
为什么要用Callback
因为Javascript的核心就是Listen和Callback
There are no comments yet