Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > AJAX - обновление результата запроса


Автор: Annuta 22.11.2007, 10:38
Не бейте ногами - это первое что я пытаюсь написать используя AJAX!  smile 
 У меня есть таблица отображающая число записей в таблице. 
 Так вот, я посылаю запрос скрипту: 
start.js
 
Код

  // proceed only if the xmlHttp object isn't busy
  if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0)
  {                                    
     Ccod = encodeURIComponent(document.getElementById("CCod").value);          
     str = "start.php?Ccod=" + Ccod;
     xmlHttp.open("GET", "start.php?Ccod=" + Ccod, true);  
     xmlHttp.onreadystatechange = handleServerResponse;
     xmlHttp.send(null);
  }

запрос в фале start.php выполняется... и я возвращаю число 
Код

    echo '<response>'; 
    echo "$n"; //Число записей  


данные эти опять возвращаются в файл start.js я вывожу их в виде ссобщения

Код

// executed automatically when a message is received from the server
function handleServerResponse() 
{
  // move forward only if the transaction has completed
  if (xmlHttp.readyState == 4) 
  {
    // status of 200 indicates the transaction completed successfully
    if (xmlHttp.status == 200) 
    {
      // extract the XML retrieved from the server
      xmlResponse = xmlHttp.responseXML;
      
    //  MyAnswer = xmlHttp.answText;   
      
      // obtain the document element (the root element) of the XML structure
      xmlDocumentElement = xmlResponse.documentElement;
      // get the text message, which is in the first child of
      // the the document element
      helloMessage = xmlDocumentElement.firstChild.data;
      // update the client display using the data received from the server
      document.getElementById("divMessage").innerHTML = '<input type=text name=num value=' + helloMessage +'>';
      S = helloMessage;            
      
      alert(S);
. . .

Проблема: если я удаляю запись в БД - и число записей меняется... а на сообщении вижу прежний результат!!! Т.е. данные от запроса не обнавляются.. что ли... ?!!! Или запрос больше не выполняется.. не пойму...! 
 помогите разобраться...  smile 

Автор: ksnk 22.11.2007, 10:46
измените 5-ю строчку в скрипте на 
Код

     str = "start.php?Ccod=" + Ccod+'&UID='+(10000*Math.random());

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

Автор: Annuta 23.11.2007, 18:16
Запрет кэширования реально помог!!! Спасибо!  smile 

Автор: UhaMurad 29.11.2007, 11:41
Обманывать таким образом броузер не очень хорошо, потому как браузер все равно будет кешировать страницы... его кеш будет забиваться впустую....

Лучше в php-нике посылать следующие заголовки:

Код

Header('Expires: Thu, 19 Feb 1998 13:24:18 GMT');
Header('Last-Modified: '.gmdate("D, d M Y H:i:s").' GMT');
Header('Cache-Control: no-cache, must-revalidate');
Header('Cache-Control: post-check=0, pre-check=0');
Header('Cache-Control: max-age=0');
Header('Pragma: no-cache');  


это запретит браузеру кэшировать страницу

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)