Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    19

    problema su ajax e getelemenbyid

    Ciao a tutti,
    scudate forse la banalità, ma non sono espertissimo di javascript

    ho il seguente problema:

    ho una tabella generata dinamicamente da asp e oracle che può avere da una ad xx righe. Per ogni riga ho una cella con un div con un nome che è prenoStatus1, prenoStatus2, prenoStatus3 e così via tanti div quante sono le rige.

    Poi ho su ogni riga anche un tasto che mi richiama una funziona Ajax che dovrebbe riempirmi il div di cui sopra, chiaramente alla riga corrispondente.

    Allo script in ajax passo il contatore del div e lo associo all'id del div che è sempre lo stesso ma poi quando lo piazzo nel getElementbyID come variabile non funziona. Se metto nel getElementbyID il nome di un ID specifico di un div funziona, ma chiaramente mi carica i dati da ajax sempre nella stessa riga.

    vi metto il codice:

    var XMLHTTP;

    function RichiestaPrenoAJAX(stringa,stringa1,stringa2,strin ga3,stringa4,stringa5)
    {
    if (stringa.length > 0)
    {
    var identificaDiv = "prenoStatus" + stringa5; ### qui identifico il div che mi serve stringa5 non è altro che un numero quindi identificaDiv può diventare ad es. prenoStatus3 ###
    var url = "anagraficheProduzioneAjax.asp?id_master_correlato =" + stringa + "&memotype=" + stringa1 + "&nome=" + stringa2 + "&dal=" + stringa3 + "&al=" + stringa4 + "&idM=" + stringa + "&aziendaM=" + stringa2;
    XMLHTTP = QualeBrowser(GestioneStato);
    XMLHTTP.open("GET", url, true);
    XMLHTTP.send(null);
    }
    else
    {
    document.getElementById(identificaDIV).innerHTML = "";
    }
    }

    function GestioneStato()
    {
    if (XMLHTTP.readyState == 4)
    {
    var R = document.getElementById(identificaDIV); ### qui dovrebbe prendermi il valore dell id quindi es prenoStatus3 e sotto con innerHTML dovrebbe spararmi il contenuto della richiesta XML del div giusto, ma che non funziona ###
    R.innerHTML = XMLHTTP.responseText;
    }
    }

    function QualeBrowser(QualeBrowser)
    {
    if (navigator.userAgent.indexOf("MSIE") != (-1))
    {
    var Classe = "Msxml2.XMLHTTP";
    if (navigator.appVersion.indexOf("MSIE 5.5") != (-1));
    {
    Classe = "Microsoft.XMLHTTP";
    }
    try
    {
    OggettoXMLHTTP = new ActiveXObject(Classe);
    OggettoXMLHTTP.onreadystatechange = QualeBrowser;
    return OggettoXMLHTTP;
    }
    catch(e)
    {
    alert("Errore: l'ActiveX non verrà eseguito!");
    }
    }
    else if (navigator.userAgent.indexOf("Mozilla") != (-1))
    {
    OggettoXMLHTTP = new XMLHttpRequest();
    OggettoXMLHTTP.onload = QualeBrowser;
    OggettoXMLHTTP.onerror = QualeBrowser;
    return OggettoXMLHTTP;
    }
    else
    {
    alert("L'esempio non funziona con altri browser!");
    }
    }


    Grazie a tutti per l'aiuto che potrete darmi
    Saluti
    Stefano
    stefano

  2. #2
    Per ogni riga ho una cella con un div con un nome che è prenoStatus1, prenoStatus2, prenoStatus3 e così via tanti div quante sono le rige.
    Nome?! getElementById prende l'id, cioè <div id="prenoStatus1">, l'hai fatta così la tabella?

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    19
    yes è fatta così per farti capire:

    <tr>
    <td><a href=javascript:funzioneAjax('val1','val2','val3', 'val4','1')>clicca</a></td>
    <td><div id=prenoStatus1></div></td>
    </tr>
    <tr>
    <td><a href=javascript:funzioneAjax('val1','val2','val3', 'val4','2')>clicca</a></td>
    <td><div id=prenoStatus2></div></td>
    </tr>

    e così via
    stefano

  4. #4
    ma in GestioneStato entra?

  5. #5
    Attento che hai dichiarato la variabile identificaDiv dentro la funzione RichiestaPrenoAJAX, anzi, peggio, in un contesto di livello ancora pi&ugrave; (un if()), quindi detta variabile, come chiudi la parentesi graffa del blocco if, ... scompare dalla faccia della terra!
    quindi ...
    dichiara le variabili che vuoi utilizzare in pi&ugrave; funzioni all'esterno di esse, come hai fatto con var XMLHTTP.
    da cui:
    codice:
    var XMLHTTP;
    var identificaDiv;
    
    function RichiestaPrenoAJAX(stringa,stringa1,stringa2,stringa3,stringa4,stringa5)
    {
        if (stringa.length > 0) {
            identificaDiv = "prenoStatus" + stringa5;
            var url = "anagraficheProduzioneAjax.asp?id_master_correlato=" + stringa + "&memotype=" + stringa1 + "&nome=" + stringa2 + "&dal=" + stringa3 + "&al=" + stringa4 + "&idM=" + stringa + "&aziendaM=" + stringa2;
            XMLHTTP = QualeBrowser(GestioneStato);
            XMLHTTP.open("GET", url, true);
            XMLHTTP.send(null);
        }
        else {
            document.getElementById(identificaDIV).innerHTML = "";
        }
    }
    
    function GestioneStato()
    {
        if (XMLHTTP.readyState == 4) {
            var R = document.getElementById(identificaDIV); 
            R.innerHTML = XMLHTTP.responseText;
        }
    }
    // eccetera ...
    HTH
    Zappa
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    19
    si infatti hai ragione me ne ero accorto che la variabile spariva dalla faccia della terra come l'avevo messa li ora ci provo la piazzo fuori come mi hai indicato.

    Stefano
    stefano

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    19
    Grazie a tutti allora
    ho modificato il codice in questo modo, ora mi carica il contenuto nel div giusto, ma ho ancora un problemino e cioè che per caricare il contenuto della richiesta ajax devo sempre fare due click sul link che mi lancia il javascript con la richiesta ajax e che al primo click o mi ritorna tutto vuoto o la richiesta fatta orima come se la mettesse in qualche cache e poi al secondo click mi carica quella giusta del div giusto.

    Codice PHP:
    var XMLHTTP;
    var 
    identificaDiv;
    XMLHTTP = new XMLHttpRequest();

    function 
    RichiestaPrenoAJAX(stringa,stringa1,stringa2,stringa3,stringa4,stringa5)
    {
        if (
    stringa.length 0)
        {
        
    identificaDiv "prenoStatus" stringa5;
        var 
    url "anagraficheProduzioneAjax.asp?id_master_correlato=" stringa "&memotype=" stringa1 "&nome=" stringa2 "&dal=" stringa3 "&al=" stringa4 "&idM=" stringa "&aziendaM=" stringa2;
        if (
    XMLHTTP.readyState == 4)
            {
                var 
    document.getElementById(identificaDiv);
                
    R.innerHTML XMLHTTP.responseText;
            }
        
    XMLHTTP.open("GET"urltrue);
        
    XMLHTTP.send(null);
        }
        else
        {
            
    document.getElementById(identificaDiv).innerHTML "";
        } 

    stefano

  8. #8
    e ci credo... ma che cavolo hai scritto la dentro?!?!
    Copia quello che ti aveva postato homezappa

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.