jQuery Ajax setTimeout JSON

时间:2011-11-18 18:54:38

标签: jquery json settimeout

我正在使用jQuery AJAX来调用JSON服务。然后我将数据吐出到.html。我想要发生两件事。 1.我想要一个刷新按钮来刷新数据,而不是整个页面。 2.我想要一个setTimeout或setInterval(它曾经效果最好)每5分钟左右更新一次数据。但刷新页面。 我如何在一个setTimeout或setInterval中包装AJAX,或者每隔5分钟左右使用一个按钮和一个计时器刷新数据。我知道这应该很简单,但我无法让它发挥作用。提前谢谢。

以下是我的代码。

    $.ajax({

    type: "POST",
    url: "/myservice.asmx/WebMethod",
    data: "{}",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (msg) {
      var myval = msg.d;
      // $('#jsonstring').html(myval);
      var obj = jQuery.parseJSON(myval);
      $('#Data1').html(obj.DataOne);
      $('#Data2').html(obj.DataTwo);

    },
    error: function (xhr, ajaxOptions, thrownError) {
        alert(xhr.statusText);
        alert(xhr.responseText);
        alert(xhr.status);
        alert(thrownError);
    }
});

4 个答案:

答案 0 :(得分:1)

这就是我所做的。我还从这篇文章中发现,间隔或超时将与数据负载和负载竞争。所以我不得不这样写。

  function myFunction() {
     $.ajax({
        type: "POST",
        url: "/myservice.asmx/WebMethod",
        data: "{}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
           var myval = msg.d;
           // $('#jsonstring').html(myval);
           var obj = jQuery.parseJSON(myval);
           $('#Data1').html(obj.DataOne);
           $('#Data2').html(obj.DataTwo);

           //TO SET THE TIMEOUT FOR DATA TO LOAD

           setTimeout(function(){
              yourFunction();
           }, 300000);
        },
        error: function (xhr, ajaxOptions, thrownError) {
           alert(xhr.statusText);
           alert(xhr.responseText);
           alert(xhr.status);
           alert(thrownError);
        }
     });
  }

  $(document).ready(function(){
     //Load on Doc Ready
     myFunction();

     //Reload on button click
     $('#myBtn').click(function(){
        myFunction();
     });

     //TO SET THE TIMEOUT FOR DATA TO LOAD - Need both in the success and here.

     setTimeout(function(){

        myFunction();

     }, 2000);
  });               

答案 1 :(得分:0)

function rData(){
    $.ajax({

        type: "POST",
        url: "/myservice.asmx/WebMethod",
        data: "{}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
          var myval = msg.d;
          // $('#jsonstring').html(myval);
          var obj = jQuery.parseJSON(myval);
          $('#Data1').html(obj.DataOne);
          $('#Data2').html(obj.DataTwo);

        },
        error: function (xhr, ajaxOptions, thrownError) {
            alert(xhr.statusText);
            alert(xhr.responseText);
            alert(xhr.status);
            alert(thrownError);
        }
    });
}

setInterval(rData,300000);

<input type='submit' value='refresh' onclick='rData();return false;'>

答案 2 :(得分:0)

假设你的ajax调用正在运行,你可以把它放在一个函数中并在定时器/间隔中引用它。

function Refresh() {
    /* your ajax code */
}

setInterval(Refresh, 300000); // five minutes, in milliseconds

$("#MyButton").click(Refresh);

答案 3 :(得分:0)

function refreshContent() { 
    $.ajax.....
}   

function refreshContentTimer() { 
    refreshContent();
    setTimeout(refreshContentTimer, 300000); // 5 min
}

$(function () {

    setTimeout(refreshContentTimer, 300000); 
    $("#refreshButton").click(refreshContent);

}