0

我得到了网络功能:

            var timeout=60000;
    setInterval(function() {

        $.ajax({
          url: "/xheresfm/getstatus.php",
          data: {
          },
          success: function( data ) {
            var obj = jQuery.parseJSON(data);
            timeout=obj.refresh;
          }
        })
    }, timeout);
});

timeoit 始终为 60000,但 obj.refresh 不会给出空结果,我无法弄清楚它不起作用。

例如,如果 obj.refresh 为 9999999,则超时仍为 60000

4

2 回答 2

1

您的代码不起作用的原因是您使用的是异步调用, timout 方法在 AJAX 调用之前执行。您可以使用以下代码克服此问题:

var timeout=60000;

var func = function() {
        $.ajax({
          url: "/xheresfm/getstatus.php",
          data: {
          },
          success: function( data ) {
            var obj = jQuery.parseJSON(data);
            timeout=obj.refresh;

            setTimeout(func, timeout);
          }
        })
    }

func();

希望这可以帮助。

于 2013-07-14T19:20:11.353 回答
0

如果性能问题,您不应该使用间隔原因 - 它会调用和调用,调用...调用,循环,loooop^^ - 不是一个好主意。你觉得我的方法怎么样?

var timeout = 60000;

var refreshStatus = function() {
        $.ajax({
          url: "/xheresfm/getstatus.php",
          success: function( data ) {
            var obj = jQuery.parseJSON(data);

            //do stuff on success
          },
          done: function () {
            setTimeout(function () {
               refreshStatus();
            }, timeout);

          }
        })
    }

refreshStatus();
于 2013-07-14T19:34:09.700 回答