Passare un argomento da una funzione all'altra con AJAX

giannidef

Nuovo Utente
17 Feb 2012
5
0
0
Salve a tutti, sto utilizzando questo codice:

Codice:
function impostaDiv(url) {

 if (window.XMLHttpRequest) { // Non-IE browsers
 req = new XMLHttpRequest();
 req.onreadystatechange = scriviDiv;
 try {
 req.open("GET", url, true);
 } catch (e) {
 alert(e);
 }
 req.send(null);
 } else if (window.ActiveXObject) { // IE
 req = new ActiveXObject("Microsoft.XMLHTTP");
 if (req) {
 req.onreadystatechange = scriviDiv;
 req.open("GET", url, true);
 req.send();       
 }
 }
}
function scriviDiv() {
 if (req.readyState == 4) { // completato
 if (req.status == 200) {
	
 document.getElementById("corpo2").innerHTML = req.responseText;
 } else {
 alert("Problem: " + req.statusText);
 }
 }
}

dove la funzione viene chiamata con un click su un link ed invia alla funzione l'URL, in questo modo:


PHP:
<a href="java-script:impostaDiv('cerca_libro.php?id={$row_data['id_biblioteca']}'"
il codice funziona perfettamente. Adesso, per non riscrivire il codice più volte, voglio inviare alla funzione due variabili (l'URL e l'ID del Div), in questo modo:


PHP:
<a href="java-script:impostaDiv('cerca_libro.php?id={$row_data['id_biblioteca']}', 'corpo2')"
modificando la funzione in questo modo:
Codice:
function impostaDiv(url, div) {

 if (window.XMLHttpRequest) { // Non-IE browsers
 req = new XMLHttpRequest();
 req.onreadystatechange = scriviDiv(div);
 try {
 req.open("GET", url, true);
 } catch (e) {
 alert(e);
 }
 req.send(null);
 } else if (window.ActiveXObject) { // IE
 req = new ActiveXObject("Microsoft.XMLHTTP");
 if (req) {
 req.onreadystatechange = scriviDiv(div);
 req.open("GET", url, true);
 req.send();       
 }
 }
}
function scriviDiv(div) {
 if (req.readyState == 4) { // completato
 if (req.status == 200) {
	
 document.getElementById(div).innerHTML = req.responseText;
 } else {
 alert("Problem: " + req.statusText);
 }
 }
}


ma il codice non funziona, anche se l'argomento div viene passato alla funzione scriviDiv, perchè se inserisco un alert


Codice:
function scriviDiv(div) {
alert(div);
 if (req.readyState == 4) { // completato
 if (req.status == 200) {
.....
..

l'alert viene eseguito correttamente. Come devo correggere il codice? Grazie!
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao
prova a mettere piu alert nella funzione

Codice:
function scriviDiv(div) {
    alert(div);
    alert(req.readyState);
    if (req.readyState == 4) { // completato
        alert(req.status);
        if (req.status == 200) {
            alert(req.responseText); // se visualizzi il response nell alert forse non trova l'elemento in cui scriverlo
            document.getElementById(div).innerHTML = req.responseText;
        } else {
            alert("Problem: " + req.statusText);
        }
    }
}

dovresti riuscire a capire dove si blocca
 

giannidef

Nuovo Utente
17 Feb 2012
5
0
0
ciao criric
La variabile Div non viene passate alle condizioni, ho provato in questo modo:
Codice:
function scriviDiv(div) {
	alert(div);
	 alert(req.readyState);
 if (req.readyState == 4) { // completato
  alert(req.status);
 if (req.status == 200) {
alert(div);
 //a.innerHTML = req.responseText;
 document.getElementById(div).innerHTML = req.responseText;
 } else {
 alert("Problem: " + req.statusText);
 }
 }
 alert(div);
}
ma vengono eseguiti solo il primo, il secondo e l'ultimo (fuori dalle condizioni). Credo che le condizioni vengano proprio saltate infatti, se scrivo:
Codice:
document.getElementById("corpo2").innerHTML = req.responseText;
il div non viene generato.
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao prova cosi:

Codice:
function impostaDiv(url, div) {

    if (window.XMLHttpRequest) { // Non-IE browsers
        req = new XMLHttpRequest();
        req.onreadystatechange = function() {           
            
            if (req.readyState == 4) { // completato
                
                if (req.status == 200) {
                    
                    document.getElementById(div).innerHTML = req.responseText;
                } else {
                    alert("Problem: " + req.statusText);
                }
            }
           
        }    

        try {
            req.open("GET", url, true);
        } catch (e) {
            alert(e);
        }
        req.send(null);
    } else if (window.ActiveXObject) { // IE
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req) {
            req.onreadystatechange = scriviDiv(div);
            req.open("GET", url, true);
            req.send();       
        }
    }
}

ho evitato di richiamare la seconda funzione e l'ho inglobata nella prima
dovrebbe funzionare

non sono esperto ne di js ne di ajax quindi non saprei spiegarti il motivo

confido in qualche esperto

PS: se ti funziona devi modificare anche dopo l'else if
 
Ultima modifica:

giannidef

Nuovo Utente
17 Feb 2012
5
0
0
se tu non sei un esperto, Cicciolina è vergine, il codice funziona perfettamente. Grazie mille
poi cercherò di capire perchè non funziona con due funzioni (potrebbe, comunque, tornare utile) Ancora grazie.
 

giannidef

Nuovo Utente
17 Feb 2012
5
0
0
se la cosa può interessarti, mi è stato consigliato anche di fare in questo modo
Codice:
req.onreadystatechange = function(){scriviDiv(div)};
al posto di:
Codice:
req.onreadystatechange = scriviDiv;
e funziona perfettamente. Grazie per il tuo suggerimento.
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Si mi interessa

fa la stessa cosa ma è più elegante di come te l'ho postata io

Non smetterò mai di voler apprendere in questo campo
 
Discussioni simili
Autore Titolo Forum Risposte Data
Rikk73 Passare come argomento in un metodo un parametro della classe istanziata PHP 0
P Passare solo alcuni parametri a script per CSV PHP 0
D passare valori da database sql a php PHP 1
P Passare contenuto in value. Ajax 1
P Passare i risultati di un foreach in un modal. Help! PHP 2
F Passare variabile a pulsante in finestra modale PHP 2
P jButton1ActionPerformed passare parametri ad altra classe Java 2
Fendo59 Passare parametri con metodo POST a una pagina in un frame PHP 0
A Problema nel passare la variabile PHP 0
I Passare dei parametri in javascript PHP 0
N PDF fpdi passare variabile PHP 4
F Come passare una variabile al modal di bootstrap PHP 1
G Passare path directory in POST PHP 2
F Passare una variabile php dal DB mysql alla pagina PHP 3
M [PHP] Passare variabile di sessione con metodo GET PHP 10
G [Javascript] Passare un valore via querystring Javascript 1
G [PHP] Passare dati tra record PHP 4
L [PHP] Passare variabile PHP 3
AMONRA75 [PHP] passare una variabile in una finestra MODAL PHP 1
P Come passare var1 a pagina php1 e var1,var2 a pagina php2 PHP 5
M Passare una varibile da PHP a Javascript PHP 2
B [PHP] passare valore ad un form su un'altra pagina PHP 4
K [PHP] Paginazione Wordpress: passare variabile PHP 6
F [Javascript] select list concatenate - passare valore dalla prima alla seconda Javascript 7
T [PHP] passare una variabile in una finestra MODAL di bootstrap PHP 3
M [MS Access] Passare i dati di una query da form a report MS Access 3
V Passare a PHP pagina bootstrap creata in HTML PHP 1
A passare parametri ad un file php prima di utilizzare $.get jQuery 1
A [PHP] Passare variabili tra pagine diverse PHP 2
A [Javascript] Passare variabile tra pagine html diverse Javascript 13
D [ASP] Passare in array stringa dinamica Classic ASP 2
K [PHP] Passare valore select PHP 2
andreacata31 [ASP.Net] Passare da Windows Application a sito Web ASP.NET 1
SimooRu [PHP] Non riesco a far passare i dati con i form PHP 4
I Passare record Database access a Java Javascript 0
C Passare dal terzo al secondo livello di un dominio su Aruba Domini 2
A Passare due variabili con Javascript. Javascript 1
Marco_88 Passare un valore prima dell'invio del form Ajax 0
A Passare variabili da javascript a PHP PHP 8
A Passare il titolo al posto dell'id PHP 1
gandalf1959 Passare variabili da listener Paypal a un'altra pagina PHP 0
pup3770 Passare parametro ad un'altra pagina in base alla condizione PHP 3
M Passare una funzione a una proprietà di oggetto Javascript 2
W Passare una variabile da una pagina all'altra PHP 25
M Passare coppie di coordinate in una google map Javascript 0
M Passare dati in un array da statement mysqli PHP 2
G Passare da Mysqli a Mysql PHP 1
M [C#] ListView: passare variabile a un LayoutTemplate caricato da codebehind ASP.NET 0
J Riscrivere URL per i post di un blog senza passare ID PHP 13
marino51 passare array da php a javascript PHP 5

Discussioni simili