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

  • 函数:function(){} 
  • function是声明;()函同含,包含的意思,包含某个变量;{}函数体。
  • 匿名函数:function(x){echo x+1}; 
  • 给函数起个名字:function A(x){echo x+1;} 
  • 把它赋值给一个变量: a = function(x){echo x+1;} 
  • 函数调用:function(x){echo x+1}(5)、A(5)、a(5) 

----------------------------------------------------------------------------------------------------------------------

了解这些之后,看个ajax是如何回调的

$.ajax({

     url: '',

    success: function(response) {

               console.log(response)

    },

});

很多小伙伴很疑惑,这个response是如何返回来的,实际并不是返回来的。

我们来看jquery文件

$.ajax = function(x,y){...}

因此$.ajax是一个匿名函数,怎么调用匿名函数? ==$.ajax(1,2)

即function(x,y){...}( 1, 2 )

 

相当于以下代码:

 var url  = ' '  ;            var success =  function(response) { alert(response) } ;

$.ajax( url , success );

$.ajax被调用

function(url,success){

          //发起ajax请求

         //得到结果data

         //调用success函数

        success(data)

        即function(response) {console.log(response)}(data)

       //打印出data

}

----------------------------------------------------------------------------------------------------------------------

附录:以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)函数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值