Ciau ragazzi la cosa è un po' complessa non sapevo bene come mettere il titolo scusate :P
Allora mi sto avvicinando ad AJAX da poco quindi sto provando un po' di roba ed è proprio carino.
Al momento però ho 2 problemi. (posterò di seguito il codice js)
Uno è che con IE6 quando vado a premere il pulsante che fa partire la funzione per la richiesta mi dà errore nel send, e cioé "object Error" (nella funzione getAll errore: "Non riesco a collegarmi al server: object Error").
Con opera 9 invece nn mi dà questo errore.
L'altro problema è che avendo più tasti nella pagina che richiamano la stessa funzione ma con id diversi anziché restituirmi subito quello giusto, devo cliccare dopo aver caricato la pagina 2 volte sul primo tasto poi quando clicco sugli altri anziché darmi l'id giusto mi dà quello del tasto prima.
l'html per intenderci è una cosa simile a questo:
Cerco di spiegarmi meglio:codice:<div id="showAll91"><input name="showAll" id="91" type="button" value="Show all " onClick="getAll('91')"></div> <div id="showAll23"><input name="showAll" id="23" type="button" value="Show all " onClick="getAll('23')"></div> <div id="showAll16"><input name="showAll" id="16" type="button" value="Show all " onClick="getAll('16')"></div> <div id="showAll45"><input name="showAll" id="45" type="button" value="Show all " onClick="getAll('45')"></div> <div id="showAll67"><input name="showAll" id="67" type="button" value="Show all " onClick="getAll('67')"></div>
se clicco sul primo dovrebbe restiturmi subito (insomma quasi) la risposta che fa semplicemente l'echo del numero passato, cioé 91. Invece di farlo nn fa niente se ci riclicco me lo dà giusto. Dopodiché se clicco sul secondo anziché darmi 23 mi dà 91. Sul terzo mi dà 23 anziché 16 (quello cliccato prima insomma). Sono stato spiegato? Lo spero.
Eccovi il js che uso. Aiuto plz
codice:// inizializziamo l'oggetto per la richiesta asincrona var xmlHttp = createHttpReqObj(); // funzione per la creazione dell'oggetto asincrono function createHttpReqObj() { var xmlHttp; // funziona con tutti i browser tranne IE6 e anteriori try { // proviamo a creare l'oggetto xmlHttp = new XMLHttpRequest(); } catch(e) { //IE6 o anteriori var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0", "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"); // proviamo finché nn ne funziona uno for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++) { try { // proviamo a creare l'oggetto xmlHttp = new ActiveXObject(XmlHttpVersions[i]); } catch (e) {} } } // ritorna l'oggetto creato e display errore if (!xmlHttp){ alert("Errore nella creazioen dell'oggetto HTTPRequest."); } else { return xmlHttp; } } // contattiamo il server per richiedere le risposte del thread function getAll(idToShow) { var serverParams = "ids=" + idToShow; // continuiamo solo se è stato creato l'oggetto if (xmlHttp) { // proviamo a connetterci al server try { xmlHttp.onreadystatechange = handleStateChange(idToShow); xmlHttp.open("GET", "getmsgs.php?" + serverParams, true); xmlHttp.send(); } // errore catch (e) { alert("Non riesco a collegarmi al server:\n" + e.toString()); } } } // al cambio dello stato richiama questa funzione function handleStateChange(idToShow) { // quando lo stato e 4 ed è ok (200) leggiamo la risposta if (xmlHttp.readyState == 4) { if (xmlHttp.status == 200) { try { // funzione per leggere la risposta writeAnswers(idToShow); } catch(e) { // errore alert("Errore nella lettura della risposta: " + e.toString()); } } else { // status alert("Errore nella ricezione dei dati:\n" + xmlHttp.statusText); } } } // cosa facciamo con la risposta? function writeAnswers(idToShow) { // risposta del server var answers = xmlHttp.responseText; //riferimento al div da sostituire divToAll = document.getElementById("showAll" + idToShow); // mostriamo la risposta divToAll.innerHTML = answers; }


Rispondi quotando