Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.07.2009, 11:11
Интересующийся
Отправить личное сообщение для LowCoder Посмотреть профиль Найти все сообщения от LowCoder
 
Регистрация: 19.06.2009
Сообщений: 13

Как правильно послать XML в POST запросе
Посоветуйте плиз – как правильно послать запрос POST посредством JavaScript и передать в запросе XML объект и как правильно принять его в PHP скрипте?
Сейчас я делаю так (xmlHttp экземпляр объекта XMLHttpRequest)
xmlHttp.open("POST", "./sample.php", true);
xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
xmlHttp.send( 'x=<?xml version="1.0" encoding="UTF-8" ?> <data><a>4</a><b>5</b></data>' );

а как это делать правильно? Так как мне кажется, что я делаю неправильно и/или коряво. И еще - как должен выглядеть правильный код на стоне клиента на php? А то конструкция

$result = $_POST['x'];


И последующий её разбор средствfми XML тоже представляются мне какими то корявыми. Я почему спрашиваю – смотрел руководство по ажакс на странице
http://jibbering.com/2002/4/httprequest.html
(параграф Using XMLHTTP with GOOGLE's SOAP API)
и там запорос передают просто как xml документ но не приводится код на стороне сервера – непонятно как в пхп это все обрабатывается.
Ответить с цитированием
  #2 (permalink)  
Старый 15.07.2009, 11:16
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Если xml передается не как текст, а как файл то и ловить его на сервере нужно так же как если бы он передавался из <input type="file" ...
Ответить с цитированием
  #3 (permalink)  
Старый 15.07.2009, 11:40
Интересующийся
Отправить личное сообщение для LowCoder Посмотреть профиль Найти все сообщения от LowCoder
 
Регистрация: 19.06.2009
Сообщений: 13

У меня передается именно как текст а не как файл
Ответить с цитированием
  #4 (permalink)  
Старый 15.07.2009, 11:40
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Если хочется передавать xml в post без всяких параметров, то в PHP его можно получить
Код:
$xmlCode = file_get_contents("php://input");
Ответить с цитированием
  #5 (permalink)  
Старый 15.07.2009, 14:42
Интересующийся
Отправить личное сообщение для LowCoder Посмотреть профиль Найти все сообщения от LowCoder
 
Регистрация: 19.06.2009
Сообщений: 13

Сообщение от Kolyaj Посмотреть сообщение
Если хочется передавать xml в post без всяких параметров, то в PHP его можно получить
Код:
$xmlCode = file_get_contents("php://input");

Спасибо. Может заодно подскажете как в пхп сделать так что бы принимался с правильными символами а то я принимаю вот что
<?xml version="1.0" encoding="UTF-8"?>
&lt;?xml version="1.0" encoding="UTF-8" ?&gt;&lt;data&gt;&lt;a&gt;4&lt;/a&gt;&lt;b&gt;5&lt;/b&gt;&lt;/data&gt;
Ответить с цитированием
  #6 (permalink)  
Старый 15.07.2009, 15:38
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Это кто-то другой балуется, PHP HTML сущности не кодирует.
Ответить с цитированием
  #7 (permalink)  
Старый 15.07.2009, 17:27
Интересующийся
Отправить личное сообщение для LowCoder Посмотреть профиль Найти все сообщения от LowCoder
 
Регистрация: 19.06.2009
Сообщений: 13

А кто виноватъ и что делать?
Ответить с цитированием
  #8 (permalink)  
Старый 15.07.2009, 17:30
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от LowCoder
А кто виноватъ и что делать?
жош...

Идти на форум PHP нада...
Ответить с цитированием
  #9 (permalink)  
Старый 15.07.2009, 18:20
Интересующийся
Отправить личное сообщение для LowCoder Посмотреть профиль Найти все сообщения от LowCoder
 
Регистрация: 19.06.2009
Сообщений: 13

Все - разобрался. Оказывается я все сделал правильно но не так. Я как раз и записал в тег <response> но мне то надо было его разобрать вначале... Вот что работает
$sxe = new SimpleXMLElement('php://input', NULL, TRUE);
	$result = $sxe->asXML();
	$dom = new DOMDocument( );
	$dom->loadXML( $result );
	$data = $dom->documentElement;
	$dom->removeChild( $data );
	$response = $dom->createElement( 'response' );
	$dom->appendChild( $response );
	$response->appendChild( $data );
	$xmlString = $dom->saveXML( );
	$xmlString = $dom->save('phpwork.xml', LIBXML_NOENT);
	echo $xmlString;


Т.е вставляем полученный xml документ в тег <response>
Ответить с цитированием
  #10 (permalink)  
Старый 15.07.2009, 18:21
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от LowCoder
Оказывается я все сделал правильно но не так.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как удалить из памяти весь XML документ? EisBerg Events/DOM/Window 1 03.04.2010 14:45
как правильно установить обработчик onclick? Yurik AJAX и COMET 6 14.04.2009 21:04
Как обновить страницу открытую через post Роберт Общие вопросы Javascript 1 05.11.2008 14:53
Как правильно оформить Send() Алекс97 AJAX и COMET 20 30.10.2008 19:19
Как узнать какие ошибки произошли при парсинге xml файла faunder Events/DOM/Window 0 12.09.2008 14:17