Newsgroup: it.comp.lang.javascript
Titolo: Costruire un documento xml da un modulo

Salve,
data una pagina XHTML, con i relativi controlli javascript, volevo 
raccogliere i dati di un modulo per inviarli al server (con 
XMLHttpRequest). Però dovrei inviare i dati nel corpo del protocollo 
HTTP organizzandoli secondo un documento xml?
Come lo creo. Devo ottenere un oggetto DOM e aggingere nodi,attributi 
etc. Vi può essere un modo per farlo in automatico?

 Si chiama XMLHttp*Request*... l'XML arriva, non devi mandarlo :-)
Scusa, ma che intendi dire?
-- 
"When you have eliminated the impossible, whatever remains,
however improbable, must be the truth."

 HTTP organizzandoli secondo un documento xml?
Non necessariamente. Certo, la possibilità di inviarli come XML può essere
un vantaggio perché hai la modo di organizzare i dati in modo più organico
e completo, ma se nel tuo caso non è richiesto, puoi fare in modo che
XMLHttpRequest faccia una richiesta come se fosse una normalissima form:
Ponendo la variabile "http" come un'istanza di un oggetto XMLHttpRequest:
	http.open("POST","read.php",false);
	http.setRequestHeader("Content-Type","application/x-www-form-urlencoded;
charset=UTF-8");
 
	http.send("myvar=something&num=42");
Queste righe potrebbero essere l'equivalente di una form di questo tipo, ad
esempio:
	<form method="POST" action="read.php">
		<input type="text" name="myvar" value="something" />
		<input type="hidden" name="num" value="42" />
	</form>
I dati verranno gestiti da "read.php" nel medesimo modo.
N.B.
Ovviamente la pagina che riceve i dati può essere in qualsiasi linguaggio,
questo è giusto un esempio esplicativo.


 solito modo dell'HTTP in GET o POST. L'XML e` la risposta.
Beh, a maggior ragione non si chiamerebbe XMLHttpRequest, ma
XMLHttpResponse. ;)
Difatti in tale oggetto la proprietà che contiene un eventuale XML di
risposta è responseXML.
Con XMLHttpRequest *Richieste* in formato XML via HTTP. Comprende anche la
gestione delle risposte nel medesimo formato.


 e come li manderesti?
"Come li mandi" :)
Come parametro del metodo send(), da specifiche oltre che stringhe accetta
documenti XML.


 supercazzola di javascript, e devo rimandarlo al server... Come?
Banalmente:
 
	http.open("POST","...",...);
	http.send(xmldoc);


 ok, mentre vado a studiare mi sorge un dubbio: e il server cosa riceve?
Beh, io posso dirti cosa riceve un server IIS, e come se lo gestisce ASP,
ma non credo sia ciň che t'interessa :)


Si, ma ho seguito le vari info, ma se volessi inviare un xml, come lo 
preparo?
Come istanzio un nuovo oggetto XML (Sia in Exp che Net)?
Devo specificare qualcosa in particolare nell'header http?
Grazie per l'aiuto

 Devo specificare qualcosa in particolare nell'header http?
No.
-- 
~ Plagiarism is copying from one source;
research is copying from two or more
(Wilson Mizner)

 Exp? Net? Qui stiamo parlando di javascript, o sbaglio?
intendevo dire sia in Explorer che in Netscape. 


 intendevo dire sia in Explorer che in Netscape. 
Per un attimo ho pensato che "net" si riferisse a ".net" e "exp" a
qualcos'altro... BTW, comunemente i due browser si abbreviano in IE e NN o
NS, anche se è più facile che tu senta parlare di FF (Firefox) che di
Netscape... sono comunque basati sullo stesso motore (Gecko).
Per quanto riguarda la domanda, una funzione base per la creazione di un
documento xml sarebbe più o meno la seguente:
function getXmlDocument(){
        if (document.implementation && 
		document.implementation.createDocument) {
 
		return document.implementation.createDocument("", "", null);
        }else if (window.ActiveXObject){
		return new ActiveXObject("Microsoft.XMLHTTP");
        }
 
	return null;
} 
IE5 su Mac dovrebbe supportare la creazione di documenti tramite
implementation, se così non fosse si dovrebbe aggiungere la compilazione
condizionale per evitare che vada in errore, e far sì che restituisca null.
-- 
~ L'intelligenza artificiale non può battere la stupidità naturale.
(Lemma di Sullivan)

 ora mi rimane da capire come Tomcat ricevera` l'XML, ma questo domani :)
Com'č andata?
-- 
~ "Non ci si uccide per amore, basta aspettare."
"Allora non mi uccido per amore, mi uccido per impazienza." (A.O. e M.T.)

 Puglia... "domani" deve ancora arrivare ;-)
*sospiro*
Come vorrei che anche il mio tempo sia relativo nel medesimo modo... sob.
:)
-- 
~ Se il destino č contro di noi, peggio per lui!