Не могу собрать данные из Xml

Тема в разделе "HTML, CSS, XML, JavaScript", создана пользователем Linel, 27 дек 2010.

  1. Linel

    Linel Гость

    Возникла проблема.
    С помощью 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>
    Функция, которая посылает данные скрипту:
    Код (Text):
    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 структурой:
    Код (Text):
    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;
    }
    }
    }
    }
    В этом месте:
    xml_errors = xml_root.getElementsByTagName("error");
    IE ругается, говорит, что xml_root у меня NULL.

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

    Linel Гость

    Если создать .xml файл - читает нормально. Если сгенерировать его средствами PHP - не работает.
     
Загрузка...

Поделиться этой страницей