View Full Version : [PHP] - integrare javascript in php
ok premetto che ho capito come funziona, (non era difficile) però ho un problema, (sono ancora agli inizi) io ho un form con dei campi da riempire e ho inserito nel html della pagina uno script js che acceda ai campi e ci metta dei dati:
<script type='text/javascript'>
document.login.username.value='rekotc';
</script>
e così funziona, adesso tramite php ho provato con :
<?php
echo "<script type='text/javascript'>";
echo "document.login.username.value='rekotc'";
echo "</script>";
?>
e mi carica una simpatica pagina bianca...anzichè visualizzare "rekotc" nel campo username..penso di aver capito che dipende dal fatto che php carica una pagina "nuova" una specie di refresh..ma a me servirebbe accedere a quel form e modificare solo quel campo, come faccio? Grazie :)
BlackAuron
25-11-2009, 22:23
soluzione semplice ...
<?php
tutto il php che vuoi
?>
<script type='text/javascript'>
document.login.username.value='rekotc';
</script>
<?php
tutto il resto del php che vuoi
?>
tra l'altro, piccolo consiglio: usa sempre document.getElementById, mai la referenza diretta, se non sbaglio dovrebbe essere deprecata.
grazie del consiglio..:), però se io fossi costretto a richiamare tramite il form uno script php? cioè volevo proprio capire come fosse possibile fare questa cosa senza trucco...e se è complicato mi adatterò :D
BlackAuron
25-11-2009, 22:31
a dire il vero sono confuso ...
se vuoi richiamare una pagina php dal form, ti basta un
<form method="post" action="foo.php">
...
</form>
In ogni caso, gli echo paiono scritti correttamente, puoi postare l'intera pagina comprensiva del form? cosi ci sono troppi pochi elementi per poter capire quale sia il tuo errore.
ok ecco qui, questo è il contenuto del body della pagina html, mentre lo script php che sto provando sono quelle 3 righe che ho postato :)
<div id="colonna-dx"><div class="box">
<h3></h3>
<form name ="login" method="post" action="login.php">
<table>
<tr><td>Login</td><td><input type="text" name="username"/></td></tr>
<tr><td>Password</td><td><input type="password" name="password"/></td></tr>
<tr><td><input type="submit" value="Invia" /></td><td><input type="reset" value="cancella!"/></td></tr>
</table>
</form>
<form method="post" action="login.php">
<input type="checkbox" name="Remember" value="ON" /> Ricordami
<br />
</form>
</div></div>
quello che sto cercando di fare io, una volta cliccato su Invia è richiamare uno script php che a sua volta inserisca uno script js che inserisca il value 'rekotc' nel campo username, può sembrare un pò confusionario ma volevo provare così..grazie ancora!
BlackAuron
25-11-2009, 22:45
salvo tu non voglia usare ajax, e cioè appoggiarti su una xmlhttprequest, quello che cerchi di fare è, per dirla senza giri di parole, impossibile.
Se tu esegui una azione predefinita di un form, in questo caso login.php, non fai altro che inviare una richiesta get al server, che ti risponde con quanto tu gli dici, e cioè una pagina il cui unico contenuto, sono quelle tre righe di javascript.
Ora, una pagina che ha come unico contenuto quelle righe di js, risulterà vuota, ma se guardi il sorgente magicamente appariranno davanti ai tuoi occhi.
Il neo della facecenda, è che stai navigando in un DOM nel quale l'oggetto login e via dicendo NON esiste, in quanto è una NUOVA pagina, contenente, grossomodo, nulla.
Per chiarirti il concetto relativo al modello base di un "sito":
1) ogni volta che clicchi su un link, o invii un form, esegui una richiesta, get o post fa poca differenza nella spiegazione
2) il server riceve la tua richiesta, e vede se il file richiesto esiste
3) se esiste, gli passa tutte le variabili che gli hai inviato, e viene elaborato l'eventuale codice php ( asp jsp o che ne so io) presente nella pagina
4) il server invia al tuo browser il risultato di questa elaborazione, che sarà tutto e solo il sorgente della nuova pagina che vedrai
PS: il tutto modulo ajax
PPS: hai ben presente il fatto che il js è client side, vero?
ooook grazie della esauriente spiegazione!
Ebbene si sapevo pure che js è lato client...e ho pure scritto delle cose sfruttando ajax tempo fa..diciamo che stasera sono stanco e ho provato a scrivere una cavolata...ti ringrazio :)
Ho pensato di riaprire la discussione di ieri perchè forse ho capito cosa intendo fare (:P) :
Se faccio una cosa del genere? all'esecuzione dello script php ricarico la pagina (immaginando di aver fatto altre operazioni subito prima altrimenti non ha senso) e quindi inserisco la funzione js come di seguito ...
<?php
header('Location: http://localhost/layout/layout_BASE.php');
function test() {
echo "<script type='text/javascript'>";
echo "document.login.username.value='rekotc'";
echo "</script>";
}
?>
non dovrebbe funzionare? adesso il campo value a cui voglio accedere esiste..no?
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.