javascript - 如何使用 jQuery ajax 数据变量

标签 javascript jquery json

我有以下 JavaScript 代码:

function initSite(){
    var site;
    $.getJSON(www+'init/initSite', function(data) { site = data; });
}
$(document).ready(function(){
    var site = initSite();
        console.log(site);
}

它返回未定义...我如何存储在站点变量中收到的json对象以便我以后可以使用它?

编辑: 这似乎有效,但我不确定使用此解决方案是否正确

var site = null;
$.ajax({
  url: www+"init/initSite",
  async: false,
  dataType: 'json',
  success: function (data) {
    site = data;
  }
});
console.log(site);

最佳答案

当然,你得到了未定义,因为你的函数不返回任何内容,并且ajax调用也是异步的,所以你必须等待服务器响应。由于 $.ajax (和快捷方式)返回一个 promise ,您可以使用 deferred 来完成此任务

function initSite(){
    return $.getJSON(www+'init/initSite');
}
$(document).ready(function(){
    $.when(initSite()).done(function(data) {
        /* continue here the code execution, e.g. call another function */

        doAllTheRemainingWorkWith(data)

    });
}

如您所见,这段代码简短且易于阅读

关于javascript - 如何使用 jQuery ajax 数据变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9198581/

相关文章:

jquery - 如何在 django 中创建嵌套多选树

javascript - 自定义 <input type ="file"> 在 IE 中不起作用

javascript - (AngularJS) 全局替换数组中的值的最有效方法

ios - 在 Swift 的 MailJet 电子邮件中附加 PDF

javascript - HTML5 Canvas 动画不显示

javascript - jquery-mobile - 如果从外部拉入触发页面,为什么插件不会触发?

javascript - 如何在循环中使用 jQuery UI 更新变量?

javascript - ng-repeat 中的数组未显示

javascript - jQuery - 如果 array.filter 失败则显示消息?

PHP 警告 : file_get_contents failed to open stream: HTTP request failed! HTTP/1.1 400 错误请求