Newsgroup: it.comp.lang.javascript
Titolo: scambio dati

Ciao,
sto cercando di avvicinarmi all'oggetto XMLHttpRequest e quindi prendete 
questo come il post di un newbie assoluto che cerca di comprendere il 
funzionamento dell'oggetto in questione.
Cosa vorrei realizzare:
avendo un <DIV> nella pagina di partenza, vorrei che al clic su un 
bottone mi venisse stampato al volo senza refresh il contenuto di una 
pagina php.
Il JavaScript con il quale cercavo di impratichirmi proviene dal blog di 
Quix (in francese).
L'ho messo tra i tag <HEAD> ed è il seguente:
<script language="javascipt">
function sendData(data, page, method)
{
     if(document.all)
     {
         //Internet Explorer
         var XhrObj = new ActiveXObject("Microsoft.XMLHTTP") ;
     }
     else
     {
         //Mozilla
         var XhrObj = new XMLHttpRequest();
     }
     //
     var content = document.getElementById("contenuto");
     //
     if(method == "GET")
     {
         if(data == 'null')
         {
             //
             XhrObj.open("GET", page);
         }
         else
         {
             //Apertura in GET
             XhrObj.open("GET", page+"?"+data);
         }
     }
     else if(method == "POST")
     {
         //Apertura in POST
         XhrObj.open("POST", page);
     }
     //
     XhrObj.onreadystatechange = function()
     {
         if (XhrObj.readyState == 4 && XhrObj.status == 200)
             content.innerHTML = XhrObj.responseText ;
     }
     if(method == "GET")
     {
         XhrObj.send(null);
     }//
     else if(method == "POST")
     {
 
XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
         XhrObj.send(data);
     }//
}//
function getFile(page)
{
     sendData('null', page, 'GET')
}//
</script>
--->il resto dell'HTML è il seguente (un campo di testo, un bottone e un 
DIV)
<BODY>
<form name="form" method="post"
onclick="javascript:sendData(this.form.campo.value,'invia_al_php.php','POST')">
<input name="campo" type="text" id="campo" maxlength="20">
<input type="submit" name="invia" value="Invia">
</form>
<DIV id="contenuto">
</DIV>
</BODY>
</HTML>
--->il PHP è il seguente:
  <?php
header('Content-type: text/html') ;
if(isset($_POST['campo']) && !empty($_POST['campo']))
{
     echo 'Bravo '.$_POST['campo'].' dato ricevuto in 
<strong>POST</strong>' ;
}//
else
{
     echo 'Errore, nulla ricevuto in GET, figurati in 
<strong>POST</strong>' ;
}
?>
Dunque cosa CREDO di fare:
mando il contenuto del campo via post allo script php per avere in 
risposta qualcosa che però non mi viene stampato nel div presente nell'html.
Aggiungo che il PHP non sembra dare errori e che cliccando il tasto back 
i dati sembrerebbero essere presenti. Quanti errori faccio? Cosa sbaglio?
Ciao, grazie a tutti, Eirk

 
Secondo me l'errore sta qua... anche io sono novizio di xmlhttprequest, pero' i 
dati passati cosi' (this.form.campo.value) sono sbagliati... infatti devono 
essere formattati secondo la sintassi standard di una GET... quindi 
campo1=valore&campo2=valore.... anche per la POST solo che per il POST i dati li 
metti come hai fatto te nella send dell'oggetto xmkhttprequest.
E non sono tanto sicuro neanche su quel this.form.campo.value...
visto che hai messo l'id all'input potresti andar bene con 
document.getElementById("campo").value
e comunque il primo parametro della funzione dovrebbe essere cosi :
sendData('campo='+document.getElementById('campo').value,'invia_al_php.php','POST')
Per il resto... questo e' quello che viene a me :)
Qualcuno piu' saggio c'e' sicuramente ma non credo che le mie soluzioni siano 
totalmente campata in aria :) eheh
Saluto!
Viandante

nulla, viandante, non riesco a farlo andare,
ci deve essere più di qualcosa che non mi è chiaro. Grazie, comunque.
Eirk

Ciao! Ho notato che hai scritto language="javascipt"... non so... forse
l'errore e' anche li'.... se hai fatto copia e incolla...
Cmq sia, e' magli se sostituisci language="javascript" con
type="text/javascript"
quindi diventa cosi':
<script type="text/javascript">
...
Byez!

Ah beh... poi valgono anche tutte le mie vecchie considerazioni, che
erano cmq esatte... se usi firefox guarda sulla console javascript cosa
ti dice...
BYEZ!
Viandante

      if(document.all)
Eviterei l'approccio document.all, conviene testare direttamente l'oggetto
ActiveXObject/XMLHttpRequest, vedi (anche per compatibilità)
 
http://www.criosoftware.it/default36.aspx
[CUT]
E' un po' che dovevo fare questa pagina..fatta. Vedi un po'; la ho scritta
di corsa, quindi testa e fammi sapere se qualcosa non va:
 
http://www.criosoftware.it/default39.aspx
-- 
"e mai che mi sia venuto in mente
 di essere più ubriaco di voi
 di essere molto più ubriaco di voi"
									  F.D.A.