Visualizzazione risultati 1 fino 5 di 5

Discussione: [JS] Problema variabile...

  1. #1
    Guest

    Predefinito [JS] Problema variabile...

    Salve a tutti, da qualche giorno ho iniziato a lavorare con il prototype di js e un codice sempre oop per gestire delle finestre...

    Il codice in questione è questo:

    Codice:
    function menuGet(path, params, width, height)
    {
    var url = 'domain' + path + '?' + params;
    var getHtmlMenu;
    
    new Ajax.Request(url, {
    method: 'get',
    onSuccess: function(transport) {
    getHtmlMenu = transport.responseText;
    }
    });
    	
    messageObj = new DHTML_modalMessage();
    messageObj.setShadowOffset(2);
    messageObj.setHtmlContent(getHtmlMenu);
    messageObj.setSize(width,height);
    messageObj.setShadowDivVisible(true);
    messageObj.display();
    }
    Ora il problema sta nel fatto che la variabile getHtmlMenu pare avere valore solo all'interno della richiesta Ajax, mentre se provo a prenderne il contenuto e passarlo all'altra classe mi da undefinied.

    Ma nello stesso tempo, se provo ad inserire un alert(getHtmlMenu); tra i 2 blocchi di codice, nell'alert verrà visualizzato undefinied mentre nel box gestito dalla seconda classe il giusto contenuto...

    Qualcuno sa spiegarmi l'arcano motivo per cui fa sto lavoro?

  2. #2
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Non ho capito molto, scrivi tutto il codice di entrambi i casi.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  3. #3
    Guest

    Predefinito

    Questo è il secondo caso...

    Codice:
    function menuGet(path, params, width, height)
    {
    var url = 'domain' + path + '?' + params;
    var getHtmlMenu;
    
    new Ajax.Request(url, {
    method: 'get',
    onSuccess: function(transport) {
    getHtmlMenu = transport.responseText;
    }
    });
    
    alert(getHtmlMenu);
    	
    messageObj = new DHTML_modalMessage();
    messageObj.setShadowOffset(2);
    messageObj.setHtmlContent(getHtmlMenu);
    messageObj.setSize(width,height);
    messageObj.setShadowDivVisible(true);
    messageObj.display();
    }

  4. #4
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,266

    Predefinito

    la prima A di ajax sta per Asincrono... la chiamata viene effettuata in parallelo all'esecuzione del codice, quindi finché non viene eseguita onSuccess, il contenuto di getHtmlMenu è indefinito. Con l'alert inserisci una "pausa" sufficiente, e la risposta alla richiesta arriva e viene elaborata.

    soluzione: il secondo blocco di codice va dentro la funzione di onSuccess - solo li sei certo che getHtmlMenu sia stata effettivamente riempita.

  5. #5
    Guest

    Predefinito

    Così funziona

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •