Microsoft.XMLHTTP и получение пхп скриптом контента

  • Автор темы Автор темы clevel
  • Дата начала Дата начала

clevel

Новичок
Microsoft.XMLHTTP и получение пхп скриптом контента

в java-script выполняю такие строки:
this.httpObj = new ActiveXObject("Microsoft.XMLHTTP");
this.action = "Save";
this.httpObj.Open("POST", index.php, true, "", "");
this.httpObj.setRequestHeader("Content-Type","text/xml");
this.httpObj.Send('мои данные');
тем самым посылается моему скрипту данные.
Да, забыл сказать, дпередаваемые данные мне хотелось бы передавать текстовые (значения формы), неохоты сначало клиентским скриптом формировать xml и отправлять после этого.. там только одна форма с данными, думается лишним еще и конвертировать из html в xml.
Вопрос: как эти данные получить пхп скриптом?
как называется переменная, куда приходят данные, как ее оттуда забрать?
я в xml новичек, прошу помочь, направить, так сказать, на путь истинный...
 
кстати... XMLHTTP насколько я понимаю ОБЯЗАН посылать на сервер well-formed XML документ...
 
заголовки мне не понадобились.. а вот с fopen('php://stdin'); проблемы. Пишу код:
$fd=fopen('php://stdin','r');
while (!feof($fd))
$cnt.=fgets($fd,4096);
fclose($fd);
записываю содержание в файл:
$fp=fopen($dir."/panel/tmp","w");
fputs($fp,$cnt);
fclose($fp);
Начинаю выполнять код, идут жуткие тормоза на комп, файл не создается темповый...
комментирую код получения контента, все летает, содается пустой файл...
убираю цикл получения контента, только одну строку получаю - возвращает пустую строку...
в javascripts упростил до:
var cnt = new ActiveXObject("Msxml2.XMLHTTP");
cnt.Open("POST", index.ph, false, null, null);
cnt.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
cnt.Send("3333333");
не помогает.
В чем может быть проблема?
 
slash, не обязан, не обязан и возвращать:) есть же помимо responseXML еще responseText

По сабжу:
яваскрипт:
Код:
<script>
var zapros="строка";
var externalDoc = new ActiveXObject("Msxml2.XMLHTTP");
externalDoc.open('POST', 'http://domain.com/test.php',false);
externalDoc.send(zapros);
alert(externalDoc.responseText);
</script>
пхп:
Код:
<?php
print $HTTP_RAW_POST_DATA
?>
:)
 
еще проблема - при передаче в скрипт данных, содержащих русские символы, происходит их "превращение в иероглифы".
Пытался писать:
cnt.setRequestHeader("Content-Type","Text/html");
cnt.setRequestHeader("charset","windows-1251");
то же самое, но с encoding, не помогает...
в чем могут быть грабли?
 
я с такой проблемой не сталкивался, но вот это должно помочь (на моем примере):
var zapros=escape("строка") ;
....
alert(unescape(externalDoc.responseText));
 
Проблема не с выводом ответа, а с отправляемым текстом, то что отправляется фуекцией externalDoc.send(zapros);
если я escape добавляю перед отправкой контента (html страничка), то в пхп urldecode конвертит все латинские символы нормально, а русские символы идут закодированные вида %u041E.
Вижу два пути: все-таки на клиенте решить проблему(даже не знаю как);
второе - прекодировка на сервере(тогда как именно? стандартных функций перекодирования из Unicode в windows-1251 я не нашел в мане).
 
хмм... innerHTML должен отдавать содержимое не в UTF-8 а в родной кодировке документов
смотри какие заголовки отдаются сервером при формировании документа...

а вообще сформировал бы ты нормальный XML документ
и распарсил его в DOMXML

плюс поищи какую нибудь опцию в XMLHTTP которая отключает перекодировку на лету...
 
clevel, плохо искал: iconv()
подключаемая библиотека, что не есть хорошо - я же у прова хостюсь, могет и не быть..
сейчас вышел так из положения:
PHP:
             $arr1=array("/\%u0419/","/\%u0426/","/\%u0423/","/\%u041A/","/\%u0415/","/\%u041D/","/\%u0413/","/\%u0428/","/\%u0429/","/\%u0417/","/\%u0425/","/\%u042A/","/\%u042D/","/\%u0416/","/\%u0414/","/\%u041B/","/\%u041E/","/\%u0420/","/\%u041F/","/\%u0410/","/\%u0412/","/\%u042B/","/\%u0424/","/\%u042F/","/\%u0427/","/\%u0421/","/\%u041C/","/\%u0418/","/\%u0422/","/\%u042C/","/\%u0411/","/\%u042E/","/\%u0439/","/\%u0446/","/\%u0443/","/\%u043A/","/\%u0435/","/\%u043D/","/\%u0433/","/\%u0448/","/\%u0449/","/\%u0437/","/\%u0445/","/\%u044A/","/\%u044D/","/\%u0436/","/\%u0434/","/\%u043B/","/\%u043E/","/\%u0440/","/\%u043F/","/\%u0430/","/\%u0432/","/\%u044B/","/\%u0444/","/\%u044F/","/\%u0447/","/\%u0441/","/\%u043C/","/\%u0438/","/\%u0442/","/\%u044C/","/\%u0431/","/\%u044E/");
             $arr2=array("Й","Ц","У","К","Е","Н","Г","Ш","Щ","З","Х","Ъ","Э","Ж","Д","Л","О","Р","П","А","В","Ы","Ф","Я","Ч","С","М","И","Т","Ь","Б","Ю","й","ц","у","к","е","н","г","ш","щ","з","х","ъ","э","ж","д","л","о","р","п","а","в","ы","ф","я","ч","с","м","и","т","ь","б","ю");
             $cnt=preg_replace($arr1,$arr2,$cnt);
но чувствую, что не самый лучший вариант по скорости..
 
а вообще сформировал бы ты нормальный XML документ
и распарсил его в DOMXML
у меня html документ передается... я себе слабо представляю xml с одним тегом, в котором содержатся данные.
 
юзаю следующую конструкцию, выдает ошибку:
var domObj = new ActiveXObject("Microsoft.XMLDOM");
domObj.CreateXmlDeclaration("1.0","windows-1251"); //ошибка здесь, пытался var _dop=domObj.CreateXmlDeclaration("1.0","windows-1251"); тоже само
domObj.documentElement = domObj.createElement("CLEVEL_ROOT")
var root = domObj.documentElement
var oNode;
oNode = domObj.createElement("CLEVEL_Original")
var oNodeOriginal = root.appendChild(oNode)

oNode = domObj.createElement("CONTENT");
oNodeOriginal.appendChild(oNode);
oNode.text=documentHTML;
возвращает также в иерогливах... помогите справиться с кодировокй! Два дня тр..сь...
 
clevel, есть мнение что ты не там роешь. Последний твой пример, по-моему свидетельствует о том, что дело не в браузере. Значит в сервере. Смотри, может у тебя установлена дефолтная кодировка, или еще что.

P.S. Есть еще createCDATASection.
http://msdn.microsoft.com/library/d...n-us/xmlsdk30/htm/xmmthcreatecdatasection.asp
 
стоп! при получении данных, я для проверки их сохраняют в файл, как есть, без парсинга... так вот,... иероглифы уже здесь есть... что заставляет меня думать, что перекодировка все же на клиенте происходит...
читают мануал по xml... при отправки domObj.xml все должно приходить в utf-8... все другие кодировки перекодируются...
вот так...
поэтому и ищу выход... надо русские чтобы символы воспринимало, хоть ты тресни, не получается!
 
Сверху