Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Passare un argomento da una funzione all'altra con AJAX

    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:
    Codice PHP:
      <a href="javascript: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:
    Codice PHP:
      <a href="javascript: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!

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Da quanto affermi, non dovrebbero esserci errori, prova a postare un link alla pagina demo pubblica cosi da testare/provare il tutto.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Mi attrezzo per pubblicare la pagina (utilizzo xampp) ma ti anticipo che scrivendo il codice in questo modo (giusto per vedere dove si blocca):
    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+div);
    }
    vengono eseguiti solo gli alert fuori dalle condizioni (primo, secondo e l'ultimo) e se scrivo infatti
    alert(req.readyState) (quello segnato con *) è uguale a 0

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Prova a cambiare questa riga:
    req.onreadystatechange = scriviDiv(div);
    con questa:
    req.onreadystatechange = function(){scriviDiv(div)};
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    sei stato gentilissimo, funziona perfettamente. grazie mille

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.