Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: AJAX+PHP+XML - проблема с IE, кодировка?
 
 автор: simbel   (04.02.2008 в 16:02)   письмо автору
 
 

Первый раз попытался написать АЯКС приложение с использованием XML. Застопорился на моменте, когда необходимо получить данные полученные с сервера.
Привожу написанный код:

1) создание объекта
  var request = null;
  function createRequest(){
    try{
      request = new XMLHttpRequest();
    } 
    catch(trymicrosoft){
      try{
        request = new ActiveXObject("Msxml2.XMLHTTP");
      }
      catch(othermicrosoft){
        try{
          request = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch(failed){
          request = null;
        }
      }
    }
    if(request == null){
      alert("Error creating request object!");
    } 
  }


2) запрос данных с сервера:
  function getTextPar(host,id,cat){
    createRequest();
    var url='http://'+host+'/ajax/descparam-ajax.php?catid='+cat+'&namepar='+id+'&data='+new Date().getTime();
    request.open('GET',url,true);
    request.onreadystatechange = openWind;
    request.send(null);
    return false;
  }


3) получение и обработка данных с сервера:
  function openWind(){
    if(request.readyState == 4){
      var xmlDoc = request.responseXML;
      var parametrid = xmlDoc.getElementsByTagName("parametrid")[2];
      var valPar = unescape(parametrid.firstChild.nodeValue);
      alert(valPar);
      //document.getElementById(id).innerHTML = text;
    }
  }


4) серверный скрипт:
<?php
  header
("Content-Type: text/xml; charset=windows-1251");

  
/*здесь запрс в БД, разбор результирующей таблицы, создание массива*/

  
echo '<?xml version="1.0" encoding="utf-8"?>';
  
?>
  <totals>
   <parametrid>12</parametrid>
   <parametrid>10</parametrid>
   <parametrid>Привет!</parametrid>
  </totals>


Проблема в следующем. Если в XML содержатся любые русские текстовые данные IE обнаруживает ошибку в функции openWind(): 'требуется объект'. В Опере и ФаерФоксе таких ошибок не наблюдается. Что это может быть? Кодировка? Как можно исправить? Помогите разобраться, пожалуйста.

   
 
 автор: Антоха   (06.02.2008 в 10:00)   письмо автору
 
   для: simbel   (04.02.2008 в 16:02)
 

Если ты посылаешь в запросе переменные, в которых могут быть спецсимволы или не английские буквы, то тебе надо самому ручками их кодировать. Для этого есть функция encodeURIComponent()
var url='http://'+host+'/ajax/descparam-ajax.php?catid='+encodeURIComponent(cat)+'&namepar='+encodeURIComponent(id)// Другие переменные

Попробуй, должно помочь...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования