我是javascript的新手,很难理解脚本的含义。 :(希望有人可以帮助我或提供一些建议,但是!)
我有一个javascript,它调用Ajax函数,如:
callAjax('../team.cgi', 'POST', data, function(text)
在ajax2.js中,它定义了函数callAjax,如:
function callAjax(url, method, data, handler, waittime, timeout_func)
我的问题是参数函数(文本)是什么?
答案 0 :(得分:3)
function(text)
是anonymous function定义的开始。大概这个电话看起来像这样:
callAjax('../team.cgi', 'POST', data, function(text)
{
// do something with text
});
这些括号之间定义的函数采用变量text
,并对其执行某些操作。这在JavaScript中是可行的,因为functions are first-class citizens。它们可以分配给变量,匿名定义等等。
通常,您会说handler
函数的callAjax
参数是回调。它是一个在Ajax调用完成时将传递某些参数的函数。这是典型的异步代码。
上面的代码段在功能上与此相同:
function doSomethingWhenAjaxCompletes(text) {
// do something
}
callAjax('../team.cgi', 'POST', data, doSomethingWhenAjaxCompletes);
第一个唯一的区别是函数没有用名称doSomethingWhenAjaxCompletes
定义;它是匿名定义的。
答案 1 :(得分:0)
如果没有看到handler
函数的上下文,我的猜测就是这是ajax调用的返回值。例如,如果上例中的team.cgi
返回xml的团队列表,那么我希望处理函数中的text
参数是该列表。
答案 2 :(得分:0)
发出AJAX请求时,执行不会停止并等待响应返回。而是发送请求并继续执行。您只需提供所谓的“回调”函数,该函数在返回AJAX响应时调用。通常,回调函数接受一个参数,该参数包含作为AJAX请求的答案而返回的响应对象或消息。
callAjax('../team.cgi', 'POST', data, function(text) {
console.log('Got a response!');
console.log(text);
}
这只是发送请求。在稍后的某个时间(由于网络延迟而暂停后),您将看到控制台日志消息出现,表明已收到响应,并且已调用用于“处理”响应的回调函数。