2011-01-20 2 views
0

У меня проблема.остановка javascript от кеширования

Я использую zend для создания веб-приложения, и я столкнулся с проблемой с моими jquery и javascripts.

У меня есть страница, показывающая заказ с кодом jquery, написанным на странице в тегах скриптов.

Я использую jquery $ .post для загрузки каждой страницы на веб-сайте.

Проблема заключается в том, что, когда вы выбираете новую страницу заказа (первый раз на странице заказа), затем нажмите кнопку, которая открывает диалоговое окно jquery, чтобы добавить информацию в порядок отправки правильных сообщений; но если вы затем перешли к другому порядку и снова нажали кнопку добавления, он отправляет переменные post из предыдущего порядка.

Я предполагаю, что предыдущая информация javascript была кэширована. Если я опустошу свой кеш, он отлично работает для заказа снова, но после этого он перестает работать.

Я использую php, чтобы привязать переменную в вопросе (идентификатор заказа) к встроенному javascript-коду.

Я предполагаю, что это мое падение.

Что я не понимаю, так это то, что javascript отлично подходит для начальной загрузки страницы, потому что он затем идет и использует ajax, чтобы захватить еще несколько разделов страницы. Это работает нормально, но когда я использую свою кнопку, он возвращается к исходному идентификатору заказа, используемому в начале.

Прикрепленный мой код:

function getFreightTable() 
    { 
     $.post("order/freighttable", "OrderID=<?= $this->orderID; ?>" , function(data){ 
      $("#tabs-3").html(data); 
     }); 
    } 

    $("#OrderAddFreightButton").live('click',function() { 
     $.post("freight/new", "OrderID=<?= $this->orderID; ?>", function(data) { 
      $("#orderAddFreightDialog").html(data); 
      $("#orderAddFreightDialog").dialog({  
       autoOpen: true, 
       hide: 'slide', 
       show: 'slide', 
       title: 'Add New Freight Information', 
       closeOnEscape: true, 
       close: function(event, ui) 
       { 
        $("#orderAddFreightDialog").empty(); 
        getFreightTable(); 
       } 
      }); 
     }); 
     return false; 
    }); 

Мой PHP помещает правильный порядок идентификаторов в коде, но Javascript возвращается к старому набору.

У меня есть аналогичная проблема с другим разделом сайта и javascript, возвращающимся обратно в код javascript от 3 недель назад, хотя я использую его на другом компьютере и очищаю кеш. Меня это волнует.

+3

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

+0

Проблема кроется в другом месте. 'POST' не кэшируются. –

ответ

4

Вы можете использовать JQuery-х .ajax() указать cache: false, который заставит запрос не кэшировать запрос - обратите внимание, что вы должны переписать функцию больше не использовать $.post и вместо того, чтобы использовать $.ajax. Если вы не хотите, чтобы сделать это, вы можете также добавить в свой адрес для того, чтобы обмануть браузер:

$.post("url...?c=" + Math.random()) 

Это не лучший способ делать вещи, но они оба работают.

0

Я попытался cache : false

Я попытался добавить случайную переменную GET в конце.

Я знаю, что сообщение не кэшируется, но javascript, который находится на каждой странице, должен быть из-за того, что используемый JavaScript является первой версией из исходного представления страницы.

+0

нет из этого работа. Я думал, что это может иметь какое-то отношение к функции jqueries .live(), оставшейся в игре. – roguecoder

Смежные вопросы