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
Форумы портала PHP.SU :: Версия для печати :: Ajax + IE 6
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » Ajax + IE 6

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

1. sabriel - 06 Марта, 2009 - 10:15:22 - перейти к сообщению
Здравствуйте, вот решил разбираться с аяксом, столкнулся с такой проблемой:
есть страничка с кодом
CODE (text):
скопировать код в буфер обмена
  1.  
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  3. <html>
  4.         <head>
  5.                 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  6.                 <title>Untitled Document</title>
  7. <script type="text/javascript">        
  8. function getXmlHttp(){
  9.   var xmlhttp;
  10.   try {
  11.     xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  12.   } catch (e) {
  13.     try {
  14.       xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  15.     } catch (E) {
  16.       xmlhttp = false;
  17.     }
  18.   }
  19.   if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
  20.     xmlhttp = new XMLHttpRequest();
  21.   }
  22.   return xmlhttp;
  23. }
  24. function getXmlHttp() {
  25.   var xmlhttp;
  26.   try {
  27.     xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  28.   } catch (e) {
  29.       try {
  30.         xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  31.       } catch (E) {
  32.       xmlhttp = false;
  33.     }
  34.   }
  35.  if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
  36.     xmlhttp = new XMLHttpRequest();
  37.   }
  38.   return xmlhttp;
  39. }
  40. // javascript-код голосования из примера
  41. function vote() {
  42.     // создать объект для запроса к серверу, функция getXmlHttp будет дана ниже
  43.     var req = getXmlHttp()  
  44.      req.open('GET', 'http://localhost/ajax.php', true);  // задать адрес подключения
  45.      // span рядом с кнопкой
  46.     // в нем будем отображать ход выполнения
  47.     var statusElem = document.getElementById('vote_status')
  48.  
  49.     req.onreadystatechange = function() {  // onreadystatechange активируется при получении ответа сервера
  50.          if (req.readyState == 4) { // если запрос закончил выполняться
  51.              statusElem.innerHTML = req.statusText // показать статус (Not Found, ОК..)
  52.              if(req.status == 200) { // если статус 200 (ОК) - выдать ответ пользователю
  53.                statusElem.innerHTML= req.responseText;
  54.             }
  55.             // тут можно добавить else с обработкой ошибок запроса
  56.         }
  57.      }
  58.     // объект запроса подготовлен: указан адрес и создана функция onreadystatechange
  59.     // для обработки ответа сервера
  60.     req.send(null);  // отослать запрос
  61.     statusElem.innerHTML = 'Ожидаю ответа сервера...'
  62. }
  63. </script>      
  64.         </head>
  65.         <body>
  66. <p><input value="Голосовать!" style="font-size: 1.2em" onclick="vote()" type="button" /></p>
  67. <div id="vote_status">вотестатус</div>
  68.  
  69. </body>
  70. </html>
  71.  


то есть инфа отправляется на скрипт и в ответе приходит:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. <table border=1>
  3. <tr>
  4. <td>first stolb</td>
  5. <td>second stolb</td>
  6. </tr>
  7. <td>2</td>
  8. <td>3</td>
  9. </tr>
  10. </table>
  11.  

кторый размешается ниже кнопки.
В опере и мазиле работает нормально но вот эксплорер пишет что ошибка тут:
CODE (text):
скопировать код в буфер обмена
  1. statusElem.innerHTML= req.responseText;

вот собственно проблема Улыбка помогите разобраться.
P.S. оишбка следующая
CODE (text):
скопировать код в буфер обмена
  1. system error -1072896658
2. vitaliy_mad - 07 Марта, 2009 - 17:47:06 - перейти к сообщению
sabriel пишет:
if (req.readyState == 4) { // если запрос закончил выполняться
statusElem.innerHTML = req.statusText; // показать статус (Not Found, ОК..)
if(req.status == 200) { // если статус 200 (ОК) - выдать ответ пользователю
statusElem.innerHTML= req.responseText;
}

после первого ифа точку с запятой пропустили
3. sabriel - 10 Марта, 2009 - 06:14:27 - перейти к сообщению
Спасибо Улыбка грубая ошибка с моей стороны. буду внимательней, но теперь код выглядит так (еще пару точков с запятой отсутствующих нашел)

CODE (text):
скопировать код в буфер обмена
  1. function vote() {
  2.     // создать объект для запроса к серверу, функция getXmlHttp будет дана ниже
  3.     var req = getXmlHttp();  
  4.      req.open('GET', 'http://localhost/ajax.php', true);  // задать адрес подключения
  5.      // span рядом с кнопкой
  6.     // в нем будем отображать ход выполнения
  7.     var statusElem = document.getElementById('vote_status');
  8.      req.onreadystatechange = function() {  // onreadystatechange активируется при получении ответа сервера
  9.          if (req.readyState == 4) { // если запрос закончил выполняться
  10.              statusElem.innerHTML = req.statusText; // показать статус (Not Found, ОК..)
  11.              if(req.status == 200) { // если статус 200 (ОК) - выдать ответ пользователю
  12.                statusElem.innerHTML= req.responseText;
  13.             }// тут можно добавить else с обработкой ошибок запроса
  14.         }
  15.      }// объект запроса подготовлен: указан адрес и создана функция onreadystatechange
  16.     // для обработки ответа сервера
  17.     req.send(null);  // отослать запрос
  18.     statusElem.innerHTML = 'Ожидаю ответа сервера...' ;
  19. }


только проблема та же. код взял непосредственно из эксплорера что б исключить кэш и все такие.
(Добавление)
Взял работающий код и проверил на локалхосте та же ошибка. с другой стороне код в IE там где он лежит работает нормально. в чем трабла? в броузере или может еще что то быть?
4. SION-ZENIT - 10 Марта, 2009 - 10:43:15 - перейти к сообщению
Со стороны сервера в скрипте пошлите заголовок с кодировкой и типом информации text/plain
5. sabriel - 10 Марта, 2009 - 12:38:43 - перейти к сообщению
это так что ли сделать?
CODE (text):
скопировать код в буфер обмена
  1.  
  2. <?php
  3. @Header("Content-Type: text/plain; charset=utf-8");
  4. echo('<table border=1>
  5. <tr>
  6. <td>first stolb</td>
  7. <td>second stolb</td>
  8. </tr>
  9. <td>2</td>
  10. <td>3</td>
  11. </tr>
  12. </table>
  13. ');
  14. ?>


если так то все тоже самое. Огорчение
(Добавление)
Хотя нет Улыбка помудрил с кэшем и прочие левые вещи сделал заработал. большое спасибо люди Улыбка очень помогли

 

Powered by ExBB FM 1.0 RC1