- Home
- Categorie
- Coding e Sistemistica
- Javascript & Framework
- Javascript + PHP + Ajax
-
Javascript + PHP + Ajax
Salve a tutti!
Allora, ho un sito in php. Nella homepage ci sono dei box che posso chiudere da una freccina e riaprire (collapse).
Ora, io devo fare che se ho per esempio il box "Agenda" aperto, devo fare che, quando clicco sulla freccina il box si chiuda (hide) e mi salvi un cookie con valore 0. Se riclicco sulla freccina il box si riapre e il valore del cookie diventa 1. Ovviamente, però, la pagina non deve ricaricarsi ogni volta che clicco sulla freccina ma deve funzionare con ajax.
Ho fatto questa funzione (dev'essere parametrizzata perché ho vari box) e funziona su Firefox ma non su IE, credo perché non riesce ad aggiornare il valore della variabile.
Qualcuno sa dirmi dov'è l'errore o ha un altro codice funzionante?
Grazie.Intanto vi posto quello che ho fatto io:
Index:
[PHP]if (!isset($_COOKIE[box_Agenda]))
{setcookie ("box_Agenda", '1', time()+3600000, "/");}
header("location:index.php");[/PHP]Funzione:
function collapseBox(myBox) { alert (myBox); var BoxColl=$(myBox); alert ('BoxColl: '+BoxColl); oXmlHttp = zXmlHttp.createRequest();//istanzio l'oggetto xmlHHTPRequest dalla libreria inclusa Zxml if(oXmlHttp) { //se l'oggetto è stato istanziato oXmlHttp.open("get","/funzioni/collapseBox.php?myBox="+myBox, true); //apro la richiesta passando metodo, url + parameti, modalità asincrona oXmlHttp.onreadystatechange = function() { //controllo lo stato di avanzamento derlla richiesta e della risposta if (oXmlHttp.readyState == 4) { //completata if (oXmlHttp.status==200) { // HTTP response --> OK alert (oXmlHttp.responseText); if (oXmlHttp.responseText==1)//assegno al contenuto interno del div formattato in HTML la risposta della pagina server {BoxColl.show();} else {BoxColl.hide();} } } } // invio richiesta oXmlHttp.send(null); } }
[PHP] echo '<a href="javascript:;" onClick="collapseBox('box_Agenda');"><img src="immagini/freccia.gif" border="0" /></a>';
echo '<div id="box_Agenda" style="display:';
if ((isset($_COOKIE[box_Agenda])) && ($_COOKIE[box_Agenda]=='1')) {echo 'block;';} else {echo 'none;';} echo '">';[/PHP]
Pagina collapseBox.php
[PHP]$myBox = $_GET[myBox];
if (!isset($myColl[$myBox]))
{$myColl[$myBox]=$_COOKIE[myBox];}
// se il cookie è settato a 1, cioè il box è aperto, setto il cookie a 0 (chiuso)
if ($_COOKIE[$myBox]=='1')
{
$myColl[$myBox] = 0;
setcookie ($myBox, $myColl[$myBox], time()+3600000, "/");
echo $myColl[$myBox];
}
// se il cookie è settato a 0, cioè il box è chiuso, setto il cookie a 1 (aperto)
else if ($_COOKIE[$myBox]=='0')
{
$myColl[$myBox] = 1;
setcookie ($myBox, $myColl[$myBox], time()+3600000, "/");
echo $myColl[$myBox];
}[/PHP]