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

本文解释了函数的基本概念,包括声明、匿名函数及函数调用,并通过具体例子阐述了AJAX回调的工作原理,帮助读者深入理解前端开发中的重要概念。
  • 函数: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)函数。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值