什么是JavaScript中的回调函数,作用是什么?

如题,本人目前在学习Ajax,对JavaScript一知半解,希望有知道的帮我解释一下。... 如题,本人目前在学习Ajax,对JavaScript一知半解,希望有知道的帮我解释一下。 展开
 我来答
Weisiqi5
2010-06-02 · 超过10用户采纳过TA的回答
知道答主
回答量:38
采纳率:0%
帮助的人:0
展开全部
一般来说Ajax最大的一个回调函数就是onreadystatechange,这个应该成为事件,每次XMLHttpRequest这个Object在URL请求,状态改变的时候就会触发这个事件。那么你用onreadystatechange=一个函数,这样让你的函数在XMLHttpRequest state change 的时候可以及时捕捉到。当然就不用setTimeout来捕捉啦。所以会方便,在你的回调函数里面可以检测Ajax对象的值,包括返回的请求的HTML,当然只有在readyState=4的时候而且status=200的时候才能用。status就是HTML状态,有200,400,500之类的。

总之,回调函数就是一个自定义的函数,在发生特定的事件的时候调用来处理这个事件的函数。
千羽千寻online
2015-09-17 · TA获得超过645个赞
知道小有建树答主
回答量:735
采纳率:37%
帮助的人:181万
展开全部
回调函数的意思就是在你执行过一个事件或者动作之后,你想它接着能够继续做的事件。
例如当你用ajax请求一个数据之后,当数据请求回来了,你希望可以进行一个动作去告诉你数据已经请求好了,那么此时就可以使用一个回调函数来执行你所期望的事件。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tianlidon
推荐于2018-03-29 · TA获得超过1219个赞
知道小有建树答主
回答量:676
采纳率:85%
帮助的人:107万
展开全部
In computer programming, a callback is a reference to a piece of executable code that is passed as an argument to other code.
计算机编程中,回调函数是作为参数传递给函数的一段可执行代码(函数)的引用。

在JavaScript中,回调函数具体的定义为:函数A作为参数(函数引用)传递到另一个函数B中,并且这个函数B执行函数A。我们就说函数A叫做回调函数。如果没有名称(函数表达式),就叫做匿名回调函数。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
育知同创教育
2018-06-27 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
展开全部
js 中的回调函数 和其他语言中的回调函数一样啊。

就是有一个 方法,这个方法的参数有点小脾气,其中一个或多个参数要求的类型是方法,这个方法就 是回调函数。

当这个方法执行完成,或者中间步骤会使用你传入的这个方法……
function a(x,c){
c(x);
}

a("hello!",function( y ){
alert(y);
})

例子如上,
当写a函数的时候,还不知道 c 是干什么的 ,只知道要对x做某件事情,当然x是什么也不知道

当调用 函数a 时,知道了 被操作的值 x 为 “hello!”,而操作方法是 alert,如此而已
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
luffy1201
推荐于2017-11-23 · TA获得超过1523个赞
知道小有建树答主
回答量:401
采纳率:0%
帮助的人:577万
展开全部
var req;
function validate() {
var idField = document.getElementById("userid");
var url = "Validate.jsp?id=" + encodeURI(idField.value);
init();
req.open("GET", url, true);
req.onreadystatechange = callback;
//callback就是回调函数,当触发req.onreadystatechange时,调用callback获取url传回的东西
req.send(null);
}

function init() {
if(window.XMLHttpRequest) {
req = new XMLHttpRequest();
} else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
}
}

function callback() {
if(req.readyState == 4) { //反馈回到客户端
if(req.status == 200) { //反馈完全正常
//alert(req.responseText);
var msg = req.responseXML.getElementsByTagName("msg")[0];
//alert(msg);
setMsg(msg.childNodes[0].nodeValue);
}
}
}

function setMsg(msg) {// 页面中的span <span id="usermsg"></span>
//alert(msg);
mdiv = document.getElementById("usermsg");
if(msg == "invalid") {
mdiv.innerHTML = "<font color='red'>username exists</font>";
} else {
mdiv.innerHTML = "<font color='green'>congratulations! you can use this username!</font>";
}
}

Validate.jsp

<%
response.setContentType("text/xml");
response.setHeader("Cache-Control", "no-store"); //HTTP1.1
response.setHeader("Pragma", "no-cache"); //HTTP1.0
response.setDateHeader("Expires", 0); //prevents catching at proxy server
System.out.println(request.getParameter("id"));
//check the database 可以先去数据库取
response.getWriter().write("<msg>valid</msg>");//写这个内容,随便指定
%>
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式