JQuery POST, чтобы обновить div - PullRequest
0 голосов
/ 10 июля 2011

Я хочу использовать функцию $.post jquery для обновления div, только если изменено содержимое, возвращаемое в данных json из php-скрипта. Я знаю, что вызовы ajax с $.post никогда не кэшируются. Пожалуйста, помогите мне с $.post или $.ajax, если это невозможно с $.post или любым другим способом, с помощью которого это возможно.

Спасибо

Ответы [ 4 ]

6 голосов
/ 10 июля 2011

Почему вы не кешируете ответ на звонок?

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

Это всего лишь пример, вы должны адаптировать его к вашим потребностям (и структуре возвращаемых данных)

0 голосов
/ 10 июля 2011
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);
    });    
}

, затем вы можете вызвать shouldRefreshDiv(refreshDiv) через определенный интервал или присоединить его к обработчику событий

0 голосов
/ 10 июля 2011

Ваш вопрос не совсем понятен, но как насчет чего-то подобного ...

  <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" />

Я думаю, вы должны использовать .getJSON(), как я использовал его там, он компактен и предлагает все необходимые вам функции.

0 голосов
/ 10 июля 2011
var result;
$.post({
    url: 'post.php'
    data: {new:'data'} 
    success: function(r){
       if (result && result != r){
        //changed
       }

       result = r;
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...