Ajax的回调函数(callback)

来源:互联网 发布:hadoop作业调度算法 编辑:程序博客网 时间:2024/05/21 19:03

Ajax中的回调函数(利用PHP+JS实现)

很多和我一样的初学者,总是搞不懂什么是回调函数。我经过了几天的学习将自己的理解记录在这里。

一、为什么使用回调函数?

首先我们应该明白我们为什么要用回调函数?我们用它能够解决什么样的问题。下边看一个例子。


(1)在以上函数d中如果我们怎样拿到temp的值?

我们应该知道在JS中或者很多语言中,我们每次用一个变量或者函数时,当执行时都会向上找。如下图。


(2)当我们在函数a中要用到变量test中,我们发现函数内部并没有调用,所有我们会去函数外边找。一级一级找,当找到了window对象时如果发现还没有找到,则会出现变量未定义的错误。

(3)下面回到我们一开始讨论的问题,我们怎样在d函数中拿到temp的值呢?看下面的方法。


 

(4)我们采取的方法在匿名函数中调用了d函数并且传了一个temp变量,而在d函数加了一个参数用来接受。

然后拿到值之后,我们就可以为所欲为了。

(5)其实上边的拿到函数内部值的过程就是回滚函数的意思。

(6)而回调函数就是为了解决拿到函数内部的值而产生的。

二、在ajax中我们是怎样应用回调函数的呢?

举一个比较使用的例子。

最终实现目标:在注册表单时判断用户名是否占用。

步骤如下:

 

(1)      在HTML页面中设立一个表单,这个表单包括一个input. 我们想要实现的是在我们光标离开了输入框之后,就会判断该用户名是否可用。如下图

 

(2)      我们封装一个ajax的文件。在这个文件中主要实现两个功能。

第一个功能是:通过ID获取DOM对象

第二个功能是:实现通过GET方式的ajax异步传输。

我们这里先写第一个功能。



 

(3)      现在我们回到我们的HTML页面中,我们给表单中的input绑定一个onblur事件(也就是失去焦点事件);

 

(4)      接下来我们要通过JS拿到我们所输入的值传递给Ajax对象,然后通过拿到的值让Ajax对象去请求连接PHP。让PHP去比对下有没有我们所输入的值。然后给我们返回结果。我将这个过程再分解成几小步。

[1]在ajax.js中添加一个函数,并且赋给$.


[2]上面写到了callback参数,并且我们又给了他一个参数。这能够说明我们的callback其实就是一个函数传递过来了。那么为什么要使用callback回滚函数呢?

三个字:作用域。我们在一开始的例子里就说了我们的函数或者变量都会向它们的上一级去寻找,而不会向下寻找。但是在这里我们把$.get放在了一个自调用的匿名函数里边。而我们所获取到的responseText内容又在最外层的自调用匿名函数的里层。我们怎样才能拿到数据呢?

这时我们就会想到回调函数,而很多项目也的确是这样用的。

下面我们就写callback函数。

[3]回到静态页面,html中,我们把输入的内容发送到ajax中。


[4]我们在上面说了假定用户名有了,我们在PHP中会echo 1;

如果没有则输出0。下面就来实现这个功能。


[5]PHP服务器的实现。(这里我们就不连接数据库等操作了,模拟下操作)

(5)      现在我们已经全部完成了,大家可以测试了。

三、总结

所谓回调函数其实就是函数调用,只不过在函数里边调用函数外边的函数而已。

 

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 铝被酸腐蚀怎么办 新娘头饰氧化了怎么办 合金饰品变黑了怎么办 麻醉机fico2升高怎么办 快递被恶意投诉怎么办 顺风快递收件人拒收怎么办 手机联系人没了怎么办 收件人号码错了怎么办 收件人写错了怎么办 快递联系不到收件人怎么办 小孩烫伤有水泡怎么办 被烫伤的疤痕怎么办 微店别人下单后怎么办 月经超了七天怎么办 收件人不在指定地址怎么办 2017款宝来熄火后异响怎么办 我身高一八米怎么办呀 规格型号错了发票怎么办 合同签错了怎么办 柜子背板起泡怎么办啊 显卡红灯不亮怎么办 小米设置全英文怎么办 小米手机变英文怎么办 阿迪贝壳头变黄怎么办 网友问我名字怎么办 护照姓名拼写错误怎么办 cfa报名时填错名字怎么办 机票拼音错了怎么办 evus忘填了怎么办 嘴唇有点歪了怎么办 淡奶油打发出水怎么办 怀孕第二次见红怎么办 孕妇第二次见红怎么办 微信不显示步数怎么办 小说父亲的名字怎么办 苹果手机芯片坏了怎么办 外地手机卡丢了怎么办 名字中点那个点怎么办 信用卡批不下来怎么办 菲律宾旅游签证过期怎么办 百香果施肥多了怎么办