javascript - 返回的数组未定义,不是异步的

标签 javascript jquery ajax

由于某种原因,我的函数在看似独立运行时返回未定义。

function getDomains() {
    $.ajax({
        url:    '/rewrites/cgi-bin/ajax.pl?action=listdomains',
        dataType:'json',
        async:  false,
        success: function( data ) {
            if (data.error) {
                alert(data.error);
            }
            else {
                alert(data.domains);
                return(data.domains);
            }
       }
   });
}

alert(getDomains());

我的第一个警报显示一个已填充的列表,但第二个警报未定义。这有什么意义吗?

最佳答案

您在调用成功的函数中。这就是为什么您没有从 getDomains 函数中获得结果的原因。将其分配给变量并在 ajax 调用后返回该变量。

function getDomains() {
    var results;
    $.ajax({
        url:    '/rewrites/cgi-bin/ajax.pl?action=listdomains',
        dataType:'json',
        async:  false,
        success: function( data ) {
            if (data.error) {
                alert(data.error);
            }
            else {
                alert(data.domains);
                results = data.domains;
            }
       }
   });
   return results;
}

alert(getDomains());

关于javascript - 返回的数组未定义,不是异步的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16838886/

相关文章:

javascript - 在 Typescript 中输入可选的可调用装饰器

javascript - 加载文档后添加内容时不执行 Jquery

php - 我怎样才能让记住用 cookie 投票比这更容易?

ajax - SproutCore 的 "Binding"功能是否允许小部件发起对服务器的调用以获取数据?

Javascript从字符串中的类名创建新对象

javascript - 如何访问附加元素并将其删除?

MVC 5 中的 JavaScript 未被读取?

javascript - 获取类并检查哪个 div 具有事件类

ajax - Wicket ajax 更新组件行为?

javascript - 如何将数组从 Controller 传递到 _layout.cshtml