开发者

Jquery POST to refresh a div

I want to use $.post function of jquery to do a div refresh, only if the content returned in the json data from the php script is modified. I know that ajax calls with $.post are never cached. Please help me with $开发者_StackOverflow中文版.post, or $.ajax if it is not possible with $.postor any other method with which this is possible.

Thanks


Why don't you cache the response of the call?

var cacheData;
$.post({.....
         success: function(data){
                  if (data !== cacheData){
                     //data has changed (or it's the first call), save new cache data and update div
                   cacheData = data;
                   $('#yourdiv').html(data);
                   }else{
                   //do nothing, data hasan't changed

This is just an example, you should adapt it to suit your needs (and the structure of data returned)


var result;
$.post({
    url: 'post.php'
    data: {new:'data'} 
    success: function(r){
       if (result && result != r){
        //changed
       }

       result = r;
    }
});


Your question isn't exactly clear, but how about something like this...

  <script type="text/javascript">
    $(document).ready(function(){
      $("#refresh").click(function(){
        info = "";
        $.getJSON('<URL TO JSON SOURCE>', function(data){
          if(info!=data){
            info = data;
            $("#content").html(data);
          }
        });
      });
    });
  </script>
  <div id="content"></div>
  <input id="refresh" type="submit" value="Refresh" />

I think you should use .getJSON() like I used it there, it's compact, and offers all the functionality you need.


var div = $('my_div_selector');
function refreshDiv(data){
    // refresh the div and populate it with some data passed as arg
    div.data('content',data);
    // do whatever you want here
}
function shouldRefreshDiv(callback){
    // determines if the data from the php script is modified
    // and executes a callback function if it is changed
    $.post('my_php_script',function(data){
        if(data != div.data('content'))
            callback(data);
    });    
}

then you can call shouldRefreshDiv(refreshDiv) on an interval or you can attach it to an event-handler

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜