Interazione tra i form html ajax e php

francesco1976

Nuovo Utente
10 Mag 2017
37
0
6
48
Buongiorno ragazzi. Come ho già scritto qualche giorno fa, sono un neofita che con molta fatica sta cercando di comprendere l'architettura di base dei siti web responsivi. Purtroppo nella mia testa ha tanta confusione, per cui sto cercando di mettere in piedi semplici esercizi (che per molti di voi saranno ridicoli...) per cercare di capire le basi delle interazioni client-server. Purtroppo in giro sul web ci sono tanti esempi per me, che tra l'altro non consco minimamante SQL, troppo complicati.
Vi posto il codice e vi spiego quello che sto cercando di fare.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento senza titolo</title>
<style>
input, label{ display:block;}

</style>
</head>

<body>
<button id="button">bottone</button>
<img src="gufi.png" />
<form action="elaborazione.php" method="GET">
<fieldset>
<legend>I miei dati personali</legend>
<label for="nome">Inserisci il tuo nome</label>
<input type="text" id="nome" name="nome" />
<label for="cognome">Inserisci il tuo cognome</label>
<input type="text" id="cognome" name="cognome" />
<input type="submit" value="Invia al server" />
</fieldset>
</form>
<script>
function f() {
var request=new XMLHttpRequest();
request.open("GET", "elaborazione.php");
request.send(null);
request.onreadystatechange=function () {
if (request.status==200 && request.readyState==4) {
var p=document.createElement("p")
p.innerHTML=request.responseText;
document.body.appendChild(p);
}
}
}

button.onclick=f;

</script>
</body>
</html>

In pratica voglio inserire semplicemente un nome e cognome in un form. Inviare i relativi dati ad uno script php e poi recuperarli con una chiamata Ajax (dal tag button) che mi agganci il testo ottenuto alla pagina da cui parte la chiamata Ajax.
Il problema sta nel fatto che inviando i dati dal form dopo il submit dello stesso mi viene sovrascritta la pagina di base.
Vi chiedo innanzitutto, è possibile un esercizio del genere? Oppure sono fuori strada?
Che consigli mi date a riguardo? Accetto qualsiasi spiegazione!!
Grazie a tutti e scusate la lunghezza del post.
CIAO
 
Ultima modifica:
Ciao Francesco
Non puoi inviare i dati con un form submit e dopo recuperarli con una richiesta ajax.
Devi inviare i dati con ajax, e in questo modo ricevi la risposta.
Quindi uno dei due button non ti serve.

All'interno della funzione f devi aggiungere queste righe:
Codice:
event.preventDefault()
var nome = document.getElementById('nome').value;
var cognome = document.getElementById('cognome').value;
La prima riga serve per impedire che il form venga inviato normalmente (quindi senza ajax).
Le altre due righe salvano i dati inseriti nel form nelle variabili nome e cognome.

Poi devi modificare anche questa riga, in modo da inviare insieme alla richiesta ajax anche il nome e il cognome:
da così:
Codice:
request.open("GET", "elaborazione.php");
a così:
Codice:
request.open("GET", "elaborazione.php?nome="+nome+"&cognome="+cognome);

Pagina completa funzionante:
Codice:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento senza titolo</title>
<style>
input, label{ display:block;}

</style>
</head>

<body>
<img src="gufi.png" />
<form action="elaborazione.php" method="GET">
<fieldset>
<legend>I miei dati personali</legend>
<label for="nome">Inserisci il tuo nome</label>
<input type="text" id="nome" name="nome" />
<label for="cognome">Inserisci il tuo cognome</label>
<input type="text" id="cognome" name="cognome" />
<button id="button">Invia al server</button>
</fieldset>
</form>
<script>
function f() {
event.preventDefault()
var nome = document.getElementById('nome').value;
var cognome = document.getElementById('cognome').value;
var request=new XMLHttpRequest();
request.open("GET", "elaborazione.php?nome="+nome+"&cognome="+cognome);
request.send(null);
request.onreadystatechange=function () {
if (request.status==200 && request.readyState==4) {
var p=document.createElement("p");
//var type=response.getResponseHeader("Content-Type");
//if(type=="text/plain") {
p.innerHTML=request.responseText;
//var form=document.forms[0];
//form.style.display="none";
document.body.appendChild(p);
//}
}
}
}
button.onclick=f;
</script>
</body>
</html>
 
  • Like
Reactions: francesco1976
Grazie. Sei stato gentilissimo. Appena trovo qualche minuto studierò con attenzione il codice. Grazie di nuovo
 
Grazie. Sei stato gentilissimo. Appena trovo qualche minuto studierò con attenzione il codice. Grazie di nuovo[/QUOTE]
 

Discussioni simili