Forum Webscript.Ru

Общие => Веб-технологии => Тема начата: u78 от 20 Апреля 2006, 16:05:31

Название: формирование xml на клиенте
Отправлено: u78 от 20 Апреля 2006, 16:05:31
подскажите, как сформировать xml на клиенте и отправить его на сервер (или хотя бы как сформировать)

задача такая: пользователь вводит данные на страничке, но не в форме, а в таблице, необходимо отправить данные на сервер

заранее благодарю
Название: формирование xml на клиенте
Отправлено: CGVictor от 20 Апреля 2006, 16:32:34
u78
"Вы не должны этого хотеть".
Гораздо правильнее делать это на сервере.

[off](кросспост в "html" убил, ибо незачем)[/off]
Название: формирование xml на клиенте
Отправлено: alex007 от 20 Апреля 2006, 21:26:53
[OFF]
Цитировать
или хотя бы как сформироват

ручками придётся долго писать, быстрее генерировать на сервере.

Цитировать
как сформировать xml на клиенте

что смотря что надо, смотрим примеры и пишем....

Цитировать
отправить его на сервер

пишем скрипт который бы принемал метод POST и посылаем данные используя метод POST
[/OFF]
Название: формирование xml на клиенте
Отправлено: u78 от 21 Апреля 2006, 10:20:40
формировать научился, теперь проблема отослать на сервер, пытаюсь отослать с помощью ActiveX вот так:
JScript
var srvXmlHttp = new ActiveXObject("Msxml2.ServerXMLHTTP.4.0");
но система ругается, что какая dll должна быть зарегистрирована, неужели нет стандартного зарегистрированного компонента?

поясню задачу:
есть веб-приложение, на странице пользователь заполняет документ (приходная накладная) то что он ввёл необходимо отправить на сервер, лучше чем xml придумать трудно для этого, так как надо описать в каком поле какие данные и их тип (дата, ссылка на справочник и пр) количество строк у документа может быть произвольным, вот почему xml и вот почему именно на клиенте
Название: формирование xml на клиенте
Отправлено: CGVictor от 21 Апреля 2006, 11:30:51
u78
1.Выбранный aX - не вариант, лучше что-то вроде ActiveXObject("Msxml2.XMLHTTP") или ActiveXObject("Microsoft.XMLHTTP") (а совесм хорошо - обойтись стандартным XMLHttpRequest()).
2.
Цитировать
u78: то что он ввёл необходимо отправить на сервер

Для этого есть формы и post. Не надо перекладывать бизнес-логику на клиент, без этого можно и нужно обойтись. Выдай клиенту нужные поля и забери их данные. Всё.
Цитировать
u78: количество строк у документа может быть произвольным

Страху нет никакого. Post вполне может передавать и массивы данных (имею в виду var[]).
Название: формирование xml на клиенте
Отправлено: u78 от 23 Апреля 2006, 13:28:47
спасибо. работает Msxml2.XMLHTTP
а он c IE идёт? а Microsoft.XMLHTTP?
кстати а есть ограничение на размер передаваемого сообщения? Post или Get.
можно и формой передавать, но дело в том, что сервер не знает какие ему поля передадут, к тому же каждое поле имеет свой тип (дата, ссылка на справочник, число) каждый тип требует своего сохранения, в принципе можно и с формой заморочиться - но придётся разбираться с именами, где у меня содержание, где тип поля и прочее, по сложности выльется в разбор xml
ещё важное отличие - submit перезагрузит страницу, а httprequest нет, в xml уже всё структурировано как мне надо, отдельно заголовок документа, отдельно строки, внутри строки поля, каждое поле имеет свой тип, каждая строка может иметь свой id (тогда не создавать в базе, а изменить)
бизнес логики здесь нет - собираются поля и отправляются на сервер. всё.
Название: формирование xml на клиенте
Отправлено: CGVictor от 23 Апреля 2006, 16:01:51
u78
Цитировать
u78:
Msxml2.XMLHTTP

Этот вроде идет для IE6 плюс с офисом,
а вот Microsoft.XMLHTTP с IE по-моему с 5.01

Цитировать
u78:
есть ограничение

Да, у GET-а лучше рассчитывать на килобайт,
у POST-а - два метра (хотя и то, и другое можно менять различными настройками сервера).

Цитировать
u78:
сервер не знает какие ему поля передадут

Тогда получается потенциальная дырка в безопасности (malformed xml), плюс injection от способов обработки. Надо серьезно подойти к секьюрности.

Делай как знаешь. Если тебе так проще.

Плюс к тому, обрати внимание на возможности Office03 XML (можно задавать схемы и валидацию, а там по-секьюрнее браузера будет), InfoPath опять же. Кстати, InfoPath07 спокойно дружит и с IE, и с Gecko.