Buon giorno,
una piccola domanda: se ho una funzione php che esegue alcune operazioni, c'e modo di richiamarla tramite link, qualcosa tipo "onpress" senza dover per forza inviare il tutto ad un'altra pagina e richiamare tale funzione da essa.
Grazie
Buon giorno,
una piccola domanda: se ho una funzione php che esegue alcune operazioni, c'e modo di richiamarla tramite link, qualcosa tipo "onpress" senza dover per forza inviare il tutto ad un'altra pagina e richiamare tale funzione da essa.
Grazie
"To iterate is human, to recurse, divine." (R.(Heller))
quello che vuoi fare tu è operare a livello server allo scatenarsi di un evento lato client, lo puoi fare con ajax, ti servirà dunque conoscere un pò di javascript e appoggiarti a una pagina php che svolge la funzione che ti serve
ma scusa, ma se in ogni caso devo usare una pagina di appoggio, allora a sto punto è inutile pure usare javascript.
Io pensavo di mettere tutto dentro ad una funzione e richiamare tale funziona come fosse un "href" dentro ad un link.
"To iterate is human, to recurse, divine." (R.(Heller))
Non puoi fare direttamente quello che dici, ma con Javascript puoi fare una via di mezzo. Tramite Javascript dici al browser di effettuare un'altra richiesta HTTP - diciamo in background - ad una pagina qualunque, che puo' essere uno script PHP con l'operazione che ti serve, ed utilizzare poi l'output restituito da quella richiesta. Questa tecnica si chiama AJAX e trovi un milione di esempi in giro per la rete.
Io ho usato spesso questo metodo:
Un frame di altezza 0 nella pagina. All'evento onpress, reindirizzi il frame alla pagina php che esegue la tua funzione.
Ok, cercherò qualche esempio in rete.
@quit10: vorrei evitare l'utilizzo di frame per non avere problemi di validazione e roba varia.
"To iterate is human, to recurse, divine." (R.(Heller))
AJAX serve a fare richieste al server in maniera asincrona, senza richiedere che venga ricaricata la pagina per intero, javascript server a creare l'oggetto della richiesta asincrona e a gestirlo oltre a rilevare l'evento che scatena la funzione che si appoggia a una pagina php. Ti faccio un esempio banale:
//lo script è formato da 2 pagine php
//PRIMA PAGINA
<html>
<head>
<title>Esempio di richiesta asincrona</title>
<script language='javascript'>
var oggetto_richiesta; //dichiaro globalmente una variabile che sarà l'oggetto della richista asincrona
function crea_oggetto_richiesta(){//crea l'oggetto della richiesta asincrona a seconda del browser
if (window.XMLHttpRequest) return new XMLHttpRequest(); // per IE7+, Firefox, Chrome, Opera, Safari
if (window.ActiveXObject) return new ActiveXObject("Microsoft.XMLHTTP"); // per IE6, IE5
return null;
}
function refresha_post(v1, v2){
oggetto_richiesta = crea_oggetto_richiesta(); //creo l'oggetto della richiesta asincrona
if(oggetto_richiesta==null){
alert("Aggiornare il browser!");
return;
}
var url = "opera.php"; //pagina php
oggetto_richiesta.onreadystatechange=lavora;
oggetto_richiesta.open("POST", url, true);
oggetto_richiesta.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
oggetto_richiesta.send("parametro1="+v1+"¶metr o2="+v2); //passo i parametri via post ( reperibili nell'array $_POST)
}
function lavora(){//viene evocata ad ogni cambio di stato della richiesta
if(oggetto_richiesta.readyState == 4){ //4 = pronto cioè la richiesta è stata effettuata con successo... in poche parole la proprietà responseText di oggetto_richiesta restituirà l'output della pagina php esterna
document.getElementById('destinazione').innerHTML = oggetto_richiesta.responseText;
}
else document.getElementById('destinazione').innerHTML = "...caricamento";//facoltativa si può anche mettere un'animazione per rendere l'idea del caricamento
}
</script>
</head>
<body>
da questa pagina effettuerò la richiesta asincrona che aggiornerà il testo nel div sottostante (evidenziato dai bordi rossi) senza ricaricare la pagina.
Aggiorna:
<button onclick="refresha_post('div aggiornato ', this.innerHTML)">con post</button>
</p>
<div id='destinazione' style='border: medium solid red'>div non ancora aggiornato</div>
</body>
</html>
//SECONDA PAGINA (opera.php)
<?php
/*
questa pagina può effettuare operazioni su file o database presenti sul server senza che la pagina visualizzata dall'utente venga aggiornata
in questo caso per fare un qualcosa di visibile mi limito a dare un output creato allo scatenarsi di un evento lato client( click su un button ),
ma in realtà posso fare qualunque cosa lato server come su una normale pagina php... perchè questa è una normale pagina php!!!
*/
$prima_parte_output = $_REQUEST['parametro1'];
$seconda_parte_output = $_REQUEST['parametro2'];
echo "$prima_parte_output $seconda_parte_output";
?>
//FINE SCRIPT
Ti devi comunque appoggiare a una pagina php se vuoi fare richieste al server, le alternative sono i frame o ancora peggio caricare all'inizio tutti i dati che potrebbero servire, AJAX evita di appesantire le pagine (se usato saggiamente), inoltre anche l'utente finale sarà felice di non dover ricaricare l'intera pagina per ottenere un pagina modificata solo in parte.
Perchè utilizzare i frame (tralaltro sconsigliatissimi) quando si può usare ajax??
Cmq ti consiglio di utilizzare prototype o jquery...molto più semplice e completo!
Ciao Samleo,
purtroppo non conosco javascript e nè tantomeno ajax.
Ho fatto una piccola, lieve infarinatura di jquery ma ancora non ho capito come gestire queste operazioni tramite jquery.
A questo punto l'unica soluzione alla mia portata mi sembra quella di mettere un action alla stessa pagina.
Avresti da consigliarmi una piccola guida possibilmente in italiano) all'utilizzo di jquery? Sono in tanti a dirmi che è semplice da usare e che promette grandi risultati...
"To iterate is human, to recurse, divine." (R.(Heller))
Io mi sono trovato meglio con prototype.
Puoi trovare qualche esempio qui:
http://www.webmasterpoint.org/ajax/3...pe-js-ajax.asp
Ciao ciao![]()
![]()