reload intera pagina da div ajax/php

  • Creatore Discussione Creatore Discussione kelsiko
  • Data di inizio Data di inizio

kelsiko

Nuovo Utente
18 Feb 2010
4
0
0
salve,
ho fatto 1 piccolo form di login che richiama 1 funzione ajax che esegue un xmlhttpRequest

la costruzione html è la seguente:
codice PHP:
PHP:
<div id="risultato"></div> 
         
<div> 
<form name="auth" method="post" onSubmit="java-script:xmlhttpPost('include/authorization.php', 'risultato', 'auth'); return false;"> 
...


dentro il div "risultato" carico il file authorization.php dove eseguo i controlli necessari sul db per procedere col login
- in caso di errori stampo un messaggio di warning...
- in caso di successo inizializzo delle variabili di sessione e di conseguenza ho necessità che venga caricata per intero una nuova pagina (user.php) ma con la funzione header la pagina user.php mi viene caricata dentro il div risultato, mentre se uso degli scriptini javascript che lanciano funzioni quali window.open o location.href sembrerebbe che vengano ignorati dal server

codice PHP:
PHP:
if(mysql_num_rows($qr) > 0){ 
$id = mysql_fetch_array($qr); 
$_SESSION['loggato'] = $id['userID']; 
header('location: ../user.php'); 
}


qualcuno sà indicarmi la via corretta?
 
Intanto correggi così:
HTML:
<form name="auth" method="post" onSubmit="javascript:xmlhttpPost('include/authorization.php', 'risultato', 'auth'); return false;">
E poi, mi sembra strano che location.href e simili vengano ignorati. Puoi postare il codice Javascript che hai usato per fare il redirect?
 
in effetti quel trattino non c'era... non so perchè c'è finito nella battitura del post...

cmq...

il codice js che gli scrivo è una cosa molto banale come:
PHP:
<?php
...
if(mysql_num_rows($qr) > 0){  
$id = mysql_fetch_array($qr);  
$_SESSION['loggato'] = $id['userID'];  
?>
<script language="javascript">
window.location.href = "../user.php";
</script>
<?
....

ho anche già provato sia in questo modo sia mettendo l'indirizzo completo ma con medesimi risultati
 
Ultima modifica:
Ma tu non lo devi mettere nella pagina AJAX, ma nella pagina che la richiama. Ad esempio, il login va a buon fine e nella pagina PHP metti un banale echo 'ok'. Poi controlli il response dalla pagina con Javascript, se è uguale a ok effettui il redirect da lì, capito?
 
non esattamente...
o meglio quasi...
quindi facciamo 1 attimo di ordine:

la pagina authorization.php è quella che mi fa la query e dove inizializzo il var di sessione ed un eventuale echo "ok";

la pagina login.php invece è quella col form che lancia la funzione ajax e che contiene il div risultato.

quindi io ottengo la risposta dentro login.php ma in che forma?
sotto forma di variabile?

ti ringrazio in anticipo x la pazienza
 
ce l'ho fatta grazie alla tua imbeccata...

cmq x onor di cronaca la funzione che mi hai chiesto ha un punto essenziale che dice

PHP:
//Se lo stato è completo 
if (self.xmlHttpReq.readyState == 4) {
	/* Aggiorno la pagina con la risposta ritornata dalla precendete richiesta dal web server.Quando la richiesta è terminata il responso della richiesta è disponibie come responseText.*/
	aggiornaPagina(self.xmlHttpReq.responseText, div_id);
}

a quel punto sono andato a metter mano alla funzione aggiornaPagina in questa maniera:

PHP:
function aggiornaPagina(stringa, div_id){
	if(stringa=='ok'){
		document.location.href = '../user.php';
	}else{
		document.getElementById(div_id).innerHTML = stringa;
	}
}
così la pagina s'è aggiornata nella maniera che volevo io...

immagino che fosse qui che mi volevi far arrivare... no?
 

Discussioni simili