Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » XML, AJAX и POST-запрос

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

GeMir



Ich finde dich
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ситуация: есть PHP-скрипт на сервере, возвращающий (проверенно)

Код:
<?xml version='1.0' encoding='utf-8'?>
<deck>
    <card>
        <frontside>Text 1</frontside>
        <backside>Text 2</backside>
    </card>
    <card>
        <frontside>Text 3</frontside>
        <backside>Text 4</backside>
    </card>
</deck>

...и есть скрипт, посылающий POST-запрос и обрабатывающий
(в идеале) отправленные сервером данные:

Код:
request = new XMLHttpRequest()
parameter = "user=abc"
 
request.open("POST", "../cards/getter.php", true)
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
request.setRequestHeader("Content-length", parameter.length)
request.setRequestHeader("Connection", "close")
 
request.onreadystatechange = function() {
    if ((this.readyState == 4) && (this.status == 200)) {
 
         xml = request.responseXML
    
        deck = xml.getElementsByTagName("card")
                                
        for (i = 0; i < deck.length; i++) {
            frontsides = frontsides + deck[i].childNodes[0].nodeValue + "<br />"
        }             
        document.getElementById("placeholder").innerHTML = frontsides
    }
}
 
request.send(parameter)

К сожалению, своих обязанностей, в кои входит создание списка вида:

Код:
Text 1
Text 3

...и замена им placeholder'а скрипт не выполняет. Хотелось бы знать почему.
 
Что странно, во всех найденных мной асинхронных примерах с POST-запросами
возвращается и обрабатывается всегда текст. Все примеры, в которых возвращается XML,
используют, почему-то, GET...

Всего записей: 10296 | Зарегистр. 15-02-2004 | Отправлено: 02:45 26-10-2011 | Исправлено: GeMir, 02:51 26-10-2011
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GeMir
1)
Цитата:
request.setRequestHeader("Content-length", parameter.length)  
request.setRequestHeader("Connection", "close")  

зачем?
2)
Цитата:
frontsides

откуда? но это не столь важно.
 
важно другое - какой Content-type выдается скриптом?  
не забываем о  
header("Content-type: text/xml");
 
 

Цитата:
Что странно, во всех найденных мной асинхронных примерах с POST-запросами  
возвращается и обрабатывается всегда текст. Все примеры, в которых возвращается XML,  
используют, почему-то, GET

без разницы..

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 03:09 26-10-2011 | Исправлено: Cheery, 03:11 26-10-2011
GeMir



Ich finde dich
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery

Цитата:
зачем?  

Эм, при POST-запросах header должен быть заполнен?
С одним только  

Код:
request.open("POST", "../cards/getter.php", true)
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded")

...к сожалению, тоже не работает.

Цитата:
важно другое - какой Content-type выдается скриптом?

XML и выдаёт:

Код:
header("Content-type: text/xml");


Цитата:
без разницы

Ну, вот и мне так подумалось.

Всего записей: 10296 | Зарегистр. 15-02-2004 | Отправлено: 09:42 26-10-2011 | Исправлено: GeMir, 09:44 26-10-2011
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GeMir

Цитата:
Эм, при POST-запросах header должен быть заполнен?  

браузер сам все сделает
 

Цитата:
XML и выдаёт:  

у меня он не срабатывал, если html заголовок. с XML заголовком все работает
 
в каком браузере проблемы?

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 09:43 26-10-2011 | Исправлено: Cheery, 09:48 26-10-2011
GeMir



Ich finde dich
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кажется, нашёл. Так:

Код:
request = new XMLHttpRequest()
parameter = "user=abc"
frontsides = ""
 
request.open("POST", "../cards/getter.php", true)
 
request.onreadystatechange = function() {
    if ((this.readyState == 4) && (this.status == 200)) {
 
         xml = request.responseXML
    
        deck = xml.getElementsByTagName("card")
                                
        for (i = 0; i < deck.length; i++) {
            frontsides = frontsides + deck[i].childNodes[0].nodeValue + "<br />"
        }             
        document.getElementById("placeholder").innerHTML = frontsides
    }
}
 
request.send(parameter)

...выдаёт

Код:
null
null

Всё лучше чем ничего, буду копать дальше.

Всего записей: 10296 | Зарегистр. 15-02-2004 | Отправлено: 09:51 26-10-2011
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GeMir

Цитата:
..выдаёт  

раз выдает 2 раза, значит что то получает и цикл срабатывает
значит дальнейшее обращение тут  

Цитата:
childNodes[0].nodeValue

неправильное

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 09:59 26-10-2011
GeMir



Ich finde dich
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery

Цитата:
неправильное

Нашёл!

Код:
request = new XMLHttpRequest()
parameter = "user=abc"
frontsides = ""
 
request.open("POST", "../cards/getter.php", true)
 
request.onreadystatechange = function() {
    if ((this.readyState == 4) && (this.status == 200)) {
 
         xml = request.responseXML
    
        deck = xml.getElementsByTagName("card")
                                
        for (i = 0; i < deck.length; i++) {
            frontsides = frontsides + deck[i].childNodes[0].childNodes[0].nodeValue + "<br />"
        }             
        document.getElementById("placeholder").innerHTML = frontsides
    }
}
 
request.send(parameter)

Всего записей: 10296 | Зарегистр. 15-02-2004 | Отправлено: 15:11 26-10-2011 | Исправлено: GeMir, 15:36 26-10-2011
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Интернет » Web-программирование » XML, AJAX и POST-запрос


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru