Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: jquery и кэш

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
san4es
Отправлено: 18 Мая, 2010 - 13:23:34
Post Id


Частый гость


Покинул форум
Сообщений всего: 201
Дата рег-ции: Март 2008  
Откуда: СПб, Ломоносов


Помог: 0 раз(а)




надеюсь понятно объясню....
вызываю модальное окно с формой (выпадающие списки, календарь, текстовые и тд) при первом вызове нареканий нет. в последующих я обновляю страничку через ajax, обновляются выпадающие списки (в теории),НО когда я вызываю снова окно снова там остаются данные с предыдущей формы. я выбираю то что нужно, а он отправляет данные по дефолту (как будто я ничё не менял, поля не заполнял и просто нажал отправить). при следующем вызове он ставитте данные которые я выбрал в прошлый раз, меняю, отправляет то что было в прошлый раз. вопщем непонятно... Однако

если без модального окна, то форма выводится как надо. табличка, которую вывожу выше в этом же скрипте новая, т.е. аякс всё возвращает всё правильно. в аякс запросе cache: false
скрипт который добываю аяксом выглядит оно примерно так
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. header("Expires: Sat, 1 Jan 2000 00:00:00 GMT");  
  5.  
  6. header("Last-Modified: " . gmdate( "D, d M Y H:i:s") . " GMT");
  7.  
  8. header("Cache-Control: no-cache, must-revalidate");
  9.  
  10. header("Pragma: no-cache");
  11.  
  12. ?>
  13.  
  14. // сдесь таблица с ланными
  15.     <script defer type="text/javascript">
  16.     $(function() {  
  17.  
  18.            
  19.         $("#dialog-form").dialog({
  20.             autoOpen: false,
  21.             height: 490,
  22.             width: 650,
  23.             modal: true,
  24.             cache: false,
  25.             buttons: {
  26.                 'Добавить': function() {
  27.                     alert(document.getElementById('cont1').selectedIndex);
  28.                         $(this).dialog('close');
  29.                        
  30.                         AddContainer('<?PHP echo $_POST['number']; ?>', document.getElementById('cont1').value, document.getElementById('type1').value, document.getElementById('oper1').value, document.getElementById('datepicker1').value, document.getElementById('cargo1').value, document.getElementById('recipient1').value, document.getElementById('mail1').value, '<?PHP echo $_POST['recnum']; ?>');
  31.                        
  32.                 },
  33.                 'Отмена': function() {
  34.                     $(this).dialog('close');
  35.                 }
  36.             }
  37.         });
  38.        
  39.        
  40.         $('#addcont')
  41.             .button()
  42.             .click(function() {
  43.                 $('#dialog-form').dialog('open');
  44.             });
  45.            
  46.         $('#savepart')
  47.             .button()
  48.             .click(function() {
  49.                 $('#dialog-form').dialog('open');
  50.             })
  51.  
  52.     });
  53.    
  54.     </script>
  55.  
  56.  
  57.  
  58. <div id="dialog-form" title="Добавить контейнер в партию.">
  59.  
  60.     <form name="f1" id='f1'>
  61.        
  62.         <table border="0" cellspacing='1' valign='top'>
  63.         <tr height="30" valign='top'>
  64.             <td width="" id='txt'>Номер контейнера</td>
  65.             <td>
  66.                
  67.             <?PHP
  68.            
  69.            
  70.            
  71.            
  72.             $q2 = "SELECT.... ";
  73.  
  74.              
  75.             $r2 = odbc_do($con, $q2);
  76.             echo "<select name='cont1' id='cont1'>";
  77.             while(odbc_fetch_row($r2))
  78.             {
  79.                 if (!in_array(trim(odbc_result($r2, 1)), $usecont))
  80.                 {
  81.                     echo "<option value='".trim(odbc_result($r2, 1))."/".trim(odbc_result($r2, 2))."'>".trim(odbc_result($r2, 1))."</option>";
  82.                 }
  83.             }
  84.             echo "</select>";
  85.              
  86.             //echo odbc_errormsg($con)."<br>".$q;      
  87.             ?>    
  88.             </td>
  89.         </tr>
  90.         <tr height="30" valign='top'>
  91.             <td id='txt'>Вид досмотра</td>
  92.             <td>
  93.             <?PHP
  94.             $q3 = "SELECT....";
  95.      
  96.              
  97.             $r3 = odbc_do($con, $q3);
  98.             echo "<select name='type1' id='type1'>";
  99.             while(odbc_fetch_row($r3))
  100.             {
  101.                 echo "<option value='".trim(odbc_result($r3, 1))."'>".trim(iconv("CP1251", "UTF-8", odbc_result($r3, 2)))."</option>";
  102.             }
  103.             echo "</select>";
  104.             ?>
  105.             </td>
  106.         </tr>
  107.         <tr height="30" valign='top'>
  108.             <td id='txt'>Дополнительные операции</td>
  109.             <td>
  110.             <?PHP
  111.             $q4 = "SELECT...";
  112.              
  113.             $r4 = odbc_do($con, $q4);
  114.             echo "<select name='oper1' id='oper1'>";
  115.             while(odbc_fetch_row($r4))
  116.             {
  117.                 echo "<option value='".trim(odbc_result($r4, 1))."'>".trim(iconv("CP1251", "UTF-8", odbc_result($r4, 2)))."</option>";
  118.             }
  119.             echo "</select>";
  120.             ?>
  121.            </td>
  122.         </tr>
  123.         <tr height="30" valign='top'>
  124.             <td id='txt'>Дата досмотра</td>
  125.             <td>
  126.                 <input type="text" id="datepicker1_" name="date1_" size="11" value="<?PHP echo $DT_CSTAGENT; ?>" disabled>
  127.                 <input type="hidden" id="datepicker1" name="date1" size="11" value="<?PHP echo $DT_CSTAGENT; ?>">
  128.            </td>
  129.         </tr>
  130.         <tr height="30" valign='top'>
  131.             <td id='txt'>Наименование груза</td>
  132.             <td>
  133.                 <textarea cols="40" id='cargo1' rows="3"></textarea>
  134.            </td>
  135.         </tr>
  136.         <tr height="30" valign='top'>
  137.             <td id='txt'>Получатель</td>
  138.             <td>
  139.                 <textarea cols="40" id='recipient1' rows="3"><?PHP echo $NM_RECIP; ?></textarea>
  140.            </td>
  141.         </tr>
  142.         <tr height="30" valign='top'>
  143.             <td width="" id='txt'>E-MAIL</td>
  144.             <td>
  145.                 <input name="mail1_" type="text" id="mail1_" value="<?PHP echo $MAIL_WBUSER; ?>" disabled>
  146.                 <input name="mail1" type="hidden" id="mail1" value="<?PHP echo $MAIL_WBUSER; ?>">
  147.            </td>
  148.         </tr>
  149.         </table>
  150.     </form>
  151. </div>
  152.         <table>
  153.             <tr><td><button id="savepart">Сохранить</button></td>
  154.             <td><button id="addcont">Добавить контейнер</button> </td></tr>
  155.         </table>

как заставить показывать то что надо, без кэширования и "новую" форму???

(Отредактировано автором: 18 Мая, 2010 - 15:36:23)

 
 Top
JustUserR
Отправлено: 18 Мая, 2010 - 15:50:35
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




san4es пишет:
Как заставить показывать то что надо, без кэширования и "новую" форму???
Проблема кеширование при повторных запросах в браузерах иногда встречается (Причем в Internet Explorer и Opera ее не бывает - а вот браузеры типа FF любят покешировать лишний раз) Если делать запрос напрямую через Iframe то можно к строке запроса добавлять случайное число и таким образом сбрасывать кеш - потому что HTTP-заголовки по отключению кеширования как правило игнорируются и надо использовать JS для решения Как вариант можно поступить и более красиво - вы устанавливаете запрос в Iframe и ждете когда HREF-адрес iframe-сменится на ваш запрос и сразу делаете в нем frames["name"].location.reload() - в таком случае вы гарантированно получить новые данные и при это не потратите особенно траффик поскольку старая загружаемая копия берется с локального диска- -а даже если другой браузер решит загрузить ее но перезагрузка пройдет сразу после получения HTTP-заголовков


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
san4es
Отправлено: 19 Мая, 2010 - 08:27:35
Post Id


Частый гость


Покинул форум
Сообщений всего: 201
Дата рег-ции: Март 2008  
Откуда: СПб, Ломоносов


Помог: 0 раз(а)




нашёл способ - добавляю случайное число или time() к id поля.
 
 Top
Phantik
Отправлено: 19 Мая, 2010 - 12:13:10
Post Id


Посетитель


Покинул форум
Сообщений всего: 305
Дата рег-ции: Июнь 2009  


Помог: 0 раз(а)




Вообще правильный запрет кэширования:

header("Cache-Control: no-store, no-cache, must-revalidate");
 
 Top
JustUserR
Отправлено: 19 Мая, 2010 - 15:58:01
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Phantik пишет:
Вообще правильный запрет кэширования:
Но в сожалению некоторые браузеры его игнорирют - поэтому лучше воспользоваться JS-скриптом который будет добавлять случайное значение к строке запроса - или же использовать функции перезагрузки страницы определенном образом для обеспечения обновления


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB