se è un lavoro, allora è la questione di spiegare che KISS (Keep It Super Simple) è meglio, sia in termini di tempi di sviluppo, sia di mantenimento (quindi costi in entrambi i casi).
BTW, ti consiglio comunque di usare una libreria di JS.
se è un lavoro, allora è la questione di spiegare che KISS (Keep It Super Simple) è meglio, sia in termini di tempi di sviluppo, sia di mantenimento (quindi costi in entrambi i casi).
BTW, ti consiglio comunque di usare una libreria di JS.
I DON'T Double Click!
beh ok ragazzi...stanotte studieròò..e vi faccio sapere grazie comunque per la collaborazione
Un piccolo aiutino visto che come t'ho già detto è abbastanza complessa come operazione oltretutto difficile da spiegare su un forum.Originariamente inviato da TOPUS
ovviamente un lavoro.... ;![]()
Quando fai il login invece di reindirizzare stampi a "video" la risposta tipo:
nel script ajax verifichi la risposta:codice:if autenticato = true then Session("Autenticato") = "OK" 'Qui stampo esito positivo Response.write "ok" else 'Qui scrivo esito negativo Response.Write "ko" End if
Questo a grandi linee, se vuoi vedere un esempio funzionate mandami un pvt che ti passo url e codici.codice:function triggered() { if (xmlhttp.readyState == 4) if (xmlhttp.status == 200) if(xmlhttp.responseText.indexOf("ok")!=-1){ //ricarico la funzione con la pagina di destinazione e il nome del div setTimeout("loadurl('pagina_ok.asp','main')",2000) }elseif(xmlhttp.responseText.indexOf("ok")!=-1){ //ricarico la funzione con la pagina di destinazione e il nome del div setTimeout("loadurl('pagina_ok.asp','main')",2000) } }
![]()
Cavicchi Andrea
Problemi con javascript, jquery, ajax clicca qui
grande...ora la provo e ti faccio sapere se funziona....
scusate ma ieri sera mi è scoppiato un mal di testa che ancora mi tormenta...
grazie grazie...
Andrea, sono andata a studiarmi un po' la questione..
e devo dire che Ajax mi stuzzica..purtroppo ho pochissimo tempo per studiarlo bene..
ma credo mi comprerò un bel libro, anche perchè è una bella alternativa a Flash avendo così tante potenzialità grafiche e ovviamente una gestione potente tra server e client..
però una cosa che non ho capito è come viene chiamata la funzione triggered
o meglio come devo chiamarla io..perchè nella parte che io avevo inserito per gestire il menu
c'è questo codiceallora nel loadurl lui controlla cheCodice PHP:<script type="text/javascript" language="javascript">
//function triggered() { questa era quella mi avevi dato tu ma poi ho visto che c'era già
// if (xmlhttp.readyState == 4) if (xmlhttp.status == 200)
// if(xmlhttp.responseText.indexOf("ok")!=-1){
////ricarico la funzione con la pagina di destinazione e il nome del div
// setTimeout("loadurl('d020101_iscriviti.html','main')",2000)
// } elseif(xmlhttp.responseText.indexOf("ok")!=-1){
////ricarico la funzione con la pagina di destinazione e il nome del div
// setTimeout("loadurl('d020101_ok.html')",2000)
// }
// }
function loadurl(dest) {
/*if (dest ==""){
dest = url;
}*/
try {
xmlhttp = window.XMLHttpRequest?new XMLHttpRequest():
new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) { /* do nothing */ }
xmlhttp.onreadystatechange = triggered;
xmlhttp.open("GET", dest);
xmlhttp.send(null);
}
function triggered() {
if (xmlhttp.readyState == 4) if (xmlhttp.status == 200)
document.getElementById("main").innerHTML =xmlhttp.responseText;
}
</script>
xmlhttp.onreadystatechange = triggered; e quindi la chiama
ma avendo messo nel file asp response.write dove poi devo controllare che sia di ritorno il valore dal file .asp?
grazie comunque stuzzica proprio sto ajax (sai sono due o tre anni che sono chiusa in flash e mi sono un stufata)
beh, se guardi questa riga
document.getElementById("main").innerHTML =xmlhttp.responseText;
puoi capire che il ritorno del server alla chiamata AJAX è contenuto in xmlhttp.responseText e sarà valido solo dopo la corretta riuscita della comunicazioni tra client server (per intenderci, quando xmlhttp.readyState == 4 && xmlhttp.status == 200 ).
triggered viene chiamata automaticamente dal lancio dell'evento readystatechange dell'oggetto XMLHttpRequest, che viene lanciato 4 o 5 volte, nei diversi stadi dell'operazione.
Quindi tu devi solo modificare quella funzione in modo che effettui le operazioni che desideri faccia.
I DON'T Double Click!
Come ti avevo già anticipato è complesso, e il mio intervento voleva indicarti la strada non il percorso esatto, io ho usato due funzioni ajax una per caricare le pagine una per fare il login (che sarebbe meglio inviarlo in modalità post non get).![]()
![]()
Cavicchi Andrea
Problemi con javascript, jquery, ajax clicca qui
ma andrea...io ti ringrazio tantissimo...era solo per capire quando veniva letto il triggered
perchè io ho provato a modificare un po' la funzione che avevo già, ma al ritorno dell'asp che verifica il login in realtà mi visualizza a video la stringa di response.write e no ricarica la pagina html e quindi cercavo di capire dove sbagliavo..
allora questo è quello che ho scritto e cambiandolo un po' ho messo nell'invio della form un link 'invia' che chiama la funzione invia();
qualcosa fa ma c'è qualcosa mi viene fuori error che non trova ì'obj' il file autentica rimanda indietri direttamente una stringa con il link della pagina da caricare
Codice PHP:function istanzaXHR() {
var obj;
if (window.XMLHttpRequest) { // Non Internet Explorer
obj = new XMLHttpRequest();
} else if (window.ActiveXObject) { // Internet Explorer
obj = new ActiveXObject("Microsoft.XMLHTTP");
}
return obj;
}
obj=istanzaXHR();
function onStateChange() { // Cambiamento Stato
if (obj.readyState == 4) { // Caricamento Avvenuto
if (obj.status == 200) { // con successo
document.getElementById("main").innerHTML=obj.responseText; // risultato
} else {
document.getElementById("main").innerHTML="?";
alert("Errore: "+obj.statusText);
}
}
}
function invia() {
inviaXHR(obj);
}
function inviaXHR(obj) {
try {
obj.open("POST", "autentica.asp", true); // Preparazione comunicazione
//document.getElementById("main").innerHTML="..."; // caricamento in corso...
obj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
obj.onreadystatechange = onStateChange;
user=escape(document.login.user.value); // valore user
password=escape(document.login.password.value); // valore psw
obj.send("user="+user+"&password="+password); // Trasferimento
} catch (e) {
document.getElementById("main").innerHTML="?";
alert("Errore: "+e);
}
}
Prova a mettere la parte in grassetto fuori dalla funzione.codice:function istanzaXHR() { var obj; if (window.XMLHttpRequest) { // Non Internet Explorer obj = new XMLHttpRequest(); } else if (window.ActiveXObject) { // Internet Explorer obj = new ActiveXObject("Microsoft.XMLHTTP"); } return obj; }
I DON'T Double Click!