让ajax数据给出超时jquery

时间:2013-07-14 17:39:33

标签: javascript jquery

我有网络功能:

            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

2 个答案:

答案 0 :(得分:1)

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

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();

希望这有帮助。

答案 1 :(得分:0)

如果性能问题你不应该使用间隔原因 - 它会调用和调用,调用... call,loop,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();