2014-12-09 2 views
1

Я попробовал все с помощью следующего кода JQuery

$(this).ready(function(){ 
    $.getJSON('json/summary.json?nocache=<?=md5(rand(1,50))?>', function(data) { 

     var sold = data.sold; 
     var price = data.averagePrice.toFixed(2); 

    }); 
}); 

По какой-то причине, проданный номер - на странице Jquery НЕ summary.json - колеблется неправильно, когда я обновить или щелкнуть по странице - это даст числа ниже, чем нужно. Я понятия не имею, что делать. В то время как я нахожусь на этом, лучший способ предотвратить загрузку кешированной страницы ... угадывание выше - не лучший метод.

BTW, summary.json возвращает что-то вроде:

{ "продано": 34, "AveragePrice": 133.0323529411764}

Спасибо за любую помощь. Я пробовал много вещей без успеха.

+0

нет абсолютно никакой возможности, чтобы переменная автоматически изменила ее значение. пожалуйста, напишите полный код. где вы используете проданную и цену и как –

+0

Спасибо, вы были верны. Проблема связана с кешем, и @ArunPJohny дал исправление. – TangoUCF

ответ

0

Кэш-механизм недействительности не подходит, поскольку он может возвращать одинаковое значение при нескольких обновлениях. Вы используете md5 случайного числа между 1 & 50, поэтому несколько попыток могут возвращать одно и то же случайное значение.

$(document).ready(function() { 
    $.getJSON('json/summary.json?nocache=' + new Date().getTime(), function (data) { 

     var sold = data.sold; 
     var price = data.averagePrice.toFixed(2); 

    }); 
}); 

Другим вариантом является установка опции кэширования глобально для всех запросов Ajax JQuery как

$.ajaxSetup({cache:false}) 

затем

$(document).ready(function() { 
    $.getJSON('json/summary.json', function (data) { 

     var sold = data.sold; 
     var price = data.averagePrice.toFixed(2); 

    }); 
}); 

Но если вы не хотите для кэширования определенного значения ресурса, вы можете способный кэш со стороны сервера, установив заголовки кеша, такие как no-cache и no-store

+0

Спасибо, кеширование было проблемой. – TangoUCF