Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.12.2010, 17:31   #1
Linel
Форумчанин
 
Аватар для Linel
 
Регистрация: 21.02.2009
Сообщений: 372
По умолчанию Не могу собрать данные из XML

Возникла проблема.
С помощью Ajax'a пытаюсь сделать проверку данных, перед занесением их в БД. Данные проверяются с помощью PHP скрипта. В начале скрипта создаю массив $errors. Если какое либо из полей пользователем было заполнено неправильно, в массив добавляется элемент. Далее, пробегаюсь по массиву и создаю XML документ. Структура такова:

<response>
<error>Ошибка 1</error>
<error>Ошибка 2</error>
<error>Ошибка 3</error>
...
</response>

В FF, Opere, Chrome работает нормально. В IE не работает. Включил Script Debugging, пишет, что xml_root - null.

Собственно коды:
Это скрипт, который генерирует XML структуру:
PHP код:
<?php
  $errors 
= array();
  
$reg_login $_GET["reg_login"];
  
$reg_password $_GET["reg_password"];
  
$reg_password2 $_GET["reg_password2"];
  
$reg_mail $_GET["reg_mail"];
  
$reg_sex $_GET["reg_sex"];
  
$reg_captcha $_GET["reg_captcha"];
  
  if (@!
$reg_login)
    
$errors[] = "Incorrect Login!";
  if (@!
$reg_password)
    
$errors[] = "Incorrect Password!";
  if (@!
$reg_password2)
    
$errors[] = "Incorrect Password2!";
  if (@!
$reg_mail)
    
$errors[] = "Incorrect mail!";
  if (@!
$reg_sex)
    
$errors[] = "Incorrect Sex!";
  if (@!
$reg_captcha)
    
$errors[] = "Incorrect Captcha";
    
  
Header("Content-Type: text/xml");
?>
<?xml version
="1.0" encoding="UTF8" standalone="yes" ?>
  <response>
    <?php
      
if (count($errors) != 0)
      {
        foreach (
$errors as $error)
        {
          echo 
"<error>".$error."</error>";
        }
      }
    
?>
  </response>
Функция, которая посылает данные скрипту:
Код:
function register_me()
{
  if (xml_http)
  {
        regis_login = document.getElementById("reg_login").value;
	regis_password = document.getElementById("reg_password").value;
	regis_password2 = document.getElementById("reg_password2").value;
	regis_mail = document.getElementById("reg_mail").value;
	regis_sex = document.getElementById("sex").value;
	regis_captcha = document.getElementById("captcha").value;
	
	xml_http.open("GET", "pages/check_reg.php?reg_login="+regis_login+"&reg_password="+regis_password, true);
        xml_http.onreadystatechange = reg_result;
	xml_http.send(null);
  }
}
И функция, которая пытается работать с XML структурой:
Код:
function reg_result()
{
  if (xml_http.readyState == 4 && xml_http.status == 200)
  {
    xml_response = xml_http.responseXML;
	xml_root = xml_response.documentElement;
	xml_errors = xml_root.getElementsByTagName("error");
	if (xml_errors.length != 0)
	{
	  display = "";
	  for (i=0; i<xml_errors.length; i++)
	  {
        xml_error = xml_errors.item(i).firstChild.data;
		display += "<br>"+xml_error;
	  }
	}
  }
}
В выделенном месте IE ругается, говорит, что xml_root у меня NULL.

Помогите, пожалуйста, разобраться. Собственно в чем может быть проблема? В других браузерах ведь работает. Я так понимаю, что эта проблема на стороне клиента? Или она может быть на стороне сервера? Как решить?
No name. Just Linel.

Последний раз редактировалось Linel; 27.12.2010 в 17:34.
Linel вне форума Ответить с цитированием
Старый 27.12.2010, 18:43   #2
Linel
Форумчанин
 
Аватар для Linel
 
Регистрация: 21.02.2009
Сообщений: 372
По умолчанию

Если создать .xml файл - читает нормально. Если сгенерировать его средствами PHP - не работает.
No name. Just Linel.
Linel вне форума Ответить с цитированием
Старый 27.12.2010, 18:44   #3
nec117
Форумчанин
 
Регистрация: 01.10.2008
Сообщений: 266
По умолчанию

Почитайте про SimpleXML
nec117 вне форума Ответить с цитированием
Старый 27.12.2010, 21:56   #4
Linel
Форумчанин
 
Аватар для Linel
 
Регистрация: 21.02.2009
Сообщений: 372
По умолчанию

Почитал. Но все таки хочу сначала научиться все реализовывать напрямую. Без готовых классов. В чем может быть проблема? Почему данные с .XML файла считываются нормально, а из сгенерированного скриптом файла - не считываются?
No name. Just Linel.
Linel вне форума Ответить с цитированием
Старый 27.12.2010, 22:21   #5
Буратино
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 16
По умолчанию

Ощущение, что какая-то проблема с хэдерами...
Буратино начал открывать шампанское носом и стал искусственным спутником Земли
Буратино вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в один лист можно собрать данные с других листов Lis000iq Microsoft Office Excel 12 24.08.2015 12:51
Как собрать данные из листов asas2010 Microsoft Office Excel 3 30.03.2010 08:59
Купил запчасти, а собрать не могу... alligats Компьютерное железо 7 12.02.2010 22:12
данные в XML smoke6969 PHP 0 19.10.2009 16:52
Как собрать данные из множества книг и сравнить их? artem5500 Microsoft Office Excel 3 10.07.2009 18:54