【问题标题】:Trying to use JSON value outside $.getJSON function [duplicate]尝试在 $.getJSON 函数之外使用 JSON 值 [重复]
【发布时间】:2011-10-29 13:01:46
【问题描述】:

可能重复:
JavaScript asynchronous return value / assignment with jQuery

我有以下 javascript 代码,time.php 文件使用 json_encode 函数输出分钟和小时。如果我将 console.log 移到 getJSON 函数内,它会找到正确的值,但是当我将它移到函数外时,它显示为未定义。

var my_hour;

$.getJSON('../scripts/time.php', function(data) {
    my_hour = data.hour;
});

console.log(my_hour);

【问题讨论】:

  • 建议的副本不够通用,不能被视为此问题的副本。

标签: javascript jquery json


【解决方案1】:

“$.getJSON”调用是异步的;与服务器的交互需要时间,但浏览器不会等待它完成。因此,您的代码函数调用之后立即运行,在回调运行之前很长时间。

【讨论】:

    【解决方案2】:

    这是因为它是异步的。 $.getJson async 发出的 Ajax 请求调用您的脚本,变量 my_hour 在您的 console.log(my_hour). 之后初始化

    如果您希望它以这种方式工作,那么您应该将console.log 放入某个 setInterval。

    http://www.w3schools.com/jsref/met_win_setinterval.asp

    var interval = setInterval(function(){
       if (my_hour != undefined){
         console.log(my_hour);
         clearInterval(interval);
       }
    }, 200);
    

    但这无论如何都不是一个好习惯..,你的代码应该放在上面提到的回调函数中。

    【讨论】:

      【解决方案3】:
      var my_hour;
      
      $.getJSON('../scripts/time.php', function(data) {
          my_hour = data.hour;
          console.log(my_hour);
      });
      

      【讨论】:

        猜你喜欢
        • 2011-05-31
        • 1970-01-01
        • 1970-01-01
        • 2014-01-21
        • 2023-03-22
        • 2019-03-25
        • 1970-01-01
        • 1970-01-01
        • 2021-03-18
        相关资源
        最近更新 更多