【问题标题】:How to save the response of a getJson in a global variable?如何将 getJson 的响应保存在全局变量中?
【发布时间】:2016-05-19 20:49:15
【问题描述】:

我想为 $.getJSON 请求的结果创建一个全局变量。如果我按照下面的代码执行此操作,则会收到 undefined 消息。

这是我的 .js 代码:

      var test = $.getJSON("dropdown_code/get_tables.php", success = function(data)
    {
        var options = "";
    for(var i = 0; i < data.length; i++)
        {
            options += "<option value='" + data[i] + "'>" + data[i] + "</option>";
        }

    $("#slctTable").append(options);
    $("#slctTable").change();
    return data;
}); 

console.log(test);

$("#slctTable").change(function()
{
$.getJSON("dropdown_code/get_fields.php?table=" + $(this).val(), success = function(data)
    {
        var options = "";
    for(var i = 0; i < data.length; i++)
        {
            options += "<option value='" + data[i] + "'>" + data[i] + "</option>";
        }
    $("#slctField").html("");
    $("#slctField").append(options);
    $("#slctField").change();
    return data;
});    
});
}); 

【问题讨论】:

标签: javascript jquery ajax getjson


【解决方案1】:
    var tableList = $.getJSON("dropdown_code/get_tables.php", success = function(data)
                        {
                            var options = "";
                        for(var i = 0; i < data.length; i++)
                            {
                                options += "<option value='" + data[i] + "'>" + data[i] + "</option>";
                            }

                        $("#slctTable").append(options);
                        $("#slctTable").change();
                        return data;
                    }); 
     console.log(tablelist);

【讨论】:

  • 现在可以在另一个 .js 文件中使用全局 var tablelist 了吗?
  • 快速的替代方法是将 var tablelist 存储到 loaclStorage localStorage.setItem("tablelist",tablelist) 并在另一个 .js 文件 var tablelist = localStorage.getItem("tablelist") @JordiZ 中检索它
  • 不能只用tablelist作为全局变量吗?
  • 是的,你可以,但这与你包含 js 文件的方式有关,所以这在这种情况下很有帮助 stackoverflow.com/questions/2932782/…,无论如何这两种方式都是正确的。
  • 好的,谢谢您的信息。我有最后一个问题:我更新了我的 .js 文件,我想再次使它成为一个变量。问题是它有一个 .change 函数。你也知道怎么解决吗?
【解决方案2】:

浏览器执行时

   console.log(tableList); 

尚未分配。

只有在执行完这一行后才能打印出来

tableList=data;

【讨论】:

  • 如果我在 $.getJson 之后声明它,它也不起作用。
  • 你之前声明过。并在 getJSON 中分配它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-26
  • 1970-01-01
  • 2016-11-29
  • 2014-01-24
  • 2016-03-31
相关资源
最近更新 更多