回调函数的原理 及实现跨域

  • 函数: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)函数。

猜你喜欢

转载自blog.csdn.net/yt_php/article/details/81001115
今日推荐