回调函数的原理 及实现跨域
分类:
文章
•
2024-07-14 15:47:58
-
函数:function(){} function是声明;()函同含,包含的意思,包含某个变量;{}函数体,规则。
-
匿名函数:function(x){echo x+1};
-
给函数起个名字:function A(x){echo x+1;} 或者 把它赋值给一个变量 a = function(x){echo x+1;}
-
函数调用:A(5)、a(5)
-
----------------------------------------------------------------------------------------------------------------------
-
了解这些之后,看个ajax是如何回调的
-
$.ajax({
-
url: '',
-
success: function(response) { console.log(response) },
-
});
-
很多小伙伴很疑惑,这个response是如何返回来的,实际并不是返回来的,是作为一个参数传递给jquery文件中执行的。
-
$.ajax是引入jq后立刻生效的匿名函数,$.ajax()相当于调用了这个匿名函数。
-
success: function(response) {alert(response)) }同 url : ' ' 一样作为参数传递给$.ajax(),只不过url是一个字符串,sucess是一个匿名函数。
-
相当于以下代码:
-
var url = ' ' ; var success = function(response) { alert(response) } ;
-
$ajax( url , success );
-
----------------------------------------------------------------------------------------------------------------------
-
在jq中发起请求和接收返回值。发送请求用传入的url参数,如果成功返回数据data,于是执行这段代码:success( data ) ,由于success是一个函数,所以就会执行。假如data是5,就会弹出5.
-
是不是相当于a = function(x){echo x+1;}; a(5);这个操作呢?a相当于参数success
-
附录:以post为例,模拟jq里的封装
-
-
-
----------------------------------------------------------------------------------------------------------------------
-
跨域请求,比如ajax的jsonp跨域,也是这个道理,首先声明一个函数
-
function callback(msg) {
-
alert(msg);
-
}
-
用script标签的src可以跨域的特点,<script src="http://.../kuayu.php?fn=callback"></script>
-
服务器代码:
-
$fn=$_GET['fn']; $str='hello'; echo $fn."('$str')"; //返回字符串 callback('hello') 于是就执行了callback(msg)函数。