I want to use jQuery ajax to retrieve data from a server.

我想把成功回调函数定义放在.ajax()块之外,如下所示.那么,我是否需要像下面这样声明变量dataFromServer,以便能够使用从成功回调返回的数据?

我见过大多数人在.ajax()块中定义成功回调.那么,如果我想在外部定义成功回调,下面的代码正确吗?

var dataFromServer;  //declare the variable first

function getData() {
    $.ajax({
        url : 'example.com',
        type: 'GET',
        success : handleData(dataFromServer)
    })
}

function handleData(data) {
    alert(data);
    //do some stuff
}

推荐答案

Just use:

function getData() {
    $.ajax({
        url : 'example.com',
        type: 'GET',
        success : handleData
    })
}

The success property requires only a reference to a function, and passes the data as parameter to this function.

由于handleData的声明方式,您可以像这样访问handleData函数.JavaScript将在运行之前解析代码中的函数声明,因此您将能够在实际声明之前的代码中使用函数.这就是众所周知的hoisting.

但是,对于这样声明的函数,这并不重要:

var myfunction = function(){}

只有当口译员通过它们时,这些才可用.

See this question for more information about the 2 ways of declaring functions

Jquery相关问答推荐

如果文本框内容在 X 秒内没有更改,则进行 post 调用

使用带有 bootstrap 验证的 Ajax 函数时出现问题

可以推迟 jQuery 的加载吗?

将日期时间从 javascript 传递给 c# (Controller)

jQuery 时间 Select 器

jQuery - 向下滚动时缩小的粘性标题

jQuery: Select 属性大于值的所有元素

如何使用jQuery动态设置宽度和高度

ajax调用后jQuery点击功能不起作用?

Select 除第一个之外的所有子元素

Jquery 和 HTML FormData 返回未捕获的 TypeError:非法调用

复选框值始终为打开

Bootstrap 折叠动画不流畅

JavaScript:让代码每分钟运行一次

Javascript 将 Markdown/Textile 转换为 HTML(理想情况下,返回 Markdown/Textile)

覆盖 twitter bootstrap Textbox Glow and Shadows

按文本 Select 链接(完全匹配)

带有函数的 JavaScript 三元运算符示例

jQuery: Select 不为空的数据属性?

为什么要使用发布/订阅模式(在 JS/jQuery 中)?