【问题标题】:Nested JSON GET functions嵌套的 JSON GET 函数
【发布时间】:2011-06-07 16:53:43
【问题描述】:

我正在寻找一种拥有 .getJSON 的方法,调用另一个函数,该函数作为回报进行另一个 .getJSON 调用。

我在我的控制器上迭代调用一个 JSON 方法,如果满足某个条件,我想完成这个迭代循环。如果满足这个条件(只能从 JSON 方法中检查),我想在 Controller 上调用另一个 JSON 方法(保存一些数据等)。

但是,从未进行过第二次 JSON 调用。当我在第一个函数之外手动调用第二个函数时,调用正确。

对此有任何提示,还是我的设计完全有缺陷?

编辑

Chyeaah.. 忘记密码了.. :D

 <script type="text/javascript">
    $(window).load(function() {
        var poller = setInterval(tick, 1000);
    });
    function tick() {
        $.getJSON("votingtick", function(voting) {
            if (voting != null) {
                if (voting.timeleft < 0) {
                    clearInterval(poller);
                    finalize();
                } else {
                    $("#timeout").text(voting.timeleft);
                    $("#voters").text(voting.votingCount);
                }
            }
        });
    }
    function finalize() {
        $.getJSON("votingend", function(voting) {
            if (voting != null) {
                $("#finished").fadeIn('fast');
            }
        });
    }
</script>

认为这是最相关的,不是吗?

【问题讨论】:

  • 你的代码是什么? (它看起来像什么?你能做一个jsfiddle.net 的例子吗?)
  • 无法制作 jsfiddle 示例 - 服务器只能在本地访问。这不是一个生产环境。但是,我更新了我的问题。提前致谢
  • 您是否尝试输出voting 以查看其中是否包含任何内容?
  • 没有明确说明.. 但我自己调用了 finalize() 函数并且它起作用了。
  • 我在tick() fn 中谈论voting

标签: json jquery nested


【解决方案1】:

我怀疑您的 poller 变量存在范围问题。它可能仅在您的 $(window).load 函数中定义,其他任何地方都没有。因此,当浏览器尝试执行clearInterval 时,会引发异常并中止脚本。您可以通过使用 try catch 将 $.getJSON 函数中的代码括起来来验证这一点。

如果您删除该函数中的 var 关键字,poller 将成为一个全局变量,您可以在脚本中的任何位置引用它。

【讨论】:

  • 确实 实际上停止了间隔:) 所以我认为没有问题。不管怎么说,多谢拉!欣赏它。
  • 啊..愚蠢的我。它没有停止间隔..由于异常而停止了脚本..是的-很可能是这里的问题:)
  • 呵呵 :) 我正要发布一个 jsfiddle 来证明你错了;)很高兴看到你想通了。
【解决方案2】:

这可能是因为当您使用未定义的值调用clearInterval 时出现错误。您在 load 事件处理程序中本地声明变量 poller,因此它在外部未定义。

在函数外声明:

var poller;
$(window).load(function() {
    poller = setInterval(tick, 1000);
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-02
    • 1970-01-01
    • 2014-06-20
    • 2019-05-21
    • 1970-01-01
    相关资源
    最近更新 更多