Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,881

    [[ajax] aggiornamento di 2 div contemporaneo

    'sera a tutti
    il mio problema consiste nel cercare di aggiornare due zone di una stessa pagina facendo due chiamate a due pagine asp esterne.
    Mi son fatto una funzioncina che richiamo così:
    chiama(pagina,"dascri");
    in cui pagina contiene il nome della pagina asp che deve elaborare il contenuto che deve poi essere inserito nel div che ha id "dascri".

    Naturalmente chiama crea l'oggetto XmlHttpObject, invia la richiesta alla pagina asp, cambia l'innerHTML del div ricevuto come parametro e fa tutto quello che deve fare... funziona benissimo finchè la faccio lavorare su un solo div, scatenandola dall'onclick di un bottone, ma se provo a utilizzarla per fargli aggiornare anche il contenuto di un altro div invocando la funzione chiama due volte di fila così
    chiama(pagina,"dascri");
    chiama(pagina2,"daleg");
    (due div diversi e i contenuti sono elaborati da due pagine aps diverse) non funge, o meglio funziona solo su uno dei due, come se le due chiamate si facessero concorrenza e portasse a compimento solo la più veloce ad essere elaborata.

    Spero di aver spiegato bene la cosa
    Suggestions?
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    io farei così::master:

    chiamo UNA SOLA VOLTA una pagina server che mi restituisce DUE RISPOSTE.

    Il modo più banale, ma che funziona benissimo è quello di unire le due risposte con un separatore (a me piace il carattere |).
    La separazione è pure banale: basta usare split...


    Se ci si vuole sbizzarrire, si potrebbe usare json o xml. Io preferisco la prima soluzione.

    Di fare due richieste server quasi contemporanee, non ci penso nemmeno
    Pietro

  3. #3
    codice:
    //pseudo codice
    var pagine = Array("p1.asp", "p2.asp");
    
    var divs = Array(document.getElementById("div1"), document.getElementById("div2"));
    
    for(per ogni divs){
       chiama(pagine[i], divs[i]);
    }
    Spero funzioni !


  4. #4
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,881
    x memphisx
    non dovrebbe funzionare, è più o meno quello che gli faccio fare io, ossia due chiamate consecutive

    x pietro09
    probabilmente funziona però è un po' complessa perché i div poi ospitano un blocco lunghissimo e molto articolato di html e testi vari... comunque sarebbe praticabile, la tengo come soluzione di riserva.

    Ma, per cultura, perché due chiamate consecutive non funzionano?
    Io credevo di aver fatto una furbata inventandomi quella funzioncina da richiamare a spot nei punti in cui mi serviva, ma se non la posso usare in sequenza mi perde un po' di significato...
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da supermac
    x memphisx
    non dovrebbe funzionare, è più o meno quello che gli faccio fare io, ossia due chiamate consecutive

    x pietro09
    probabilmente funziona però è un po' complessa perché i div poi ospitano un blocco lunghissimo e molto articolato di html e testi vari... comunque sarebbe praticabile, la tengo come soluzione di riserva.

    Ma, per cultura, perché due chiamate consecutive non funzionano?
    Io credevo di aver fatto una furbata inventandomi quella funzioncina da richiamare a spot nei punti in cui mi serviva, ma se non la posso usare in sequenza mi perde un po' di significato...
    gentilissimo supermac, naturalmente io ho esposto la mia idea, ma non ho certo la pretesa che sia l'unica praticabile, nè che sia la migliore.
    Io ti invito a fare un esperimento mentale: prendi un modem analogico di 56 k e connettiti ad un sito lento, tipo Telecom. Domanda: due chiamate onerose in termini di tempo, sono accettabili, quando posso farne una sola?


    Comunque, quello che desideri tu si può fare, e non capisco perchè hai dei problemi.

    In pseudo codice scrivi per esempio:

    ajax(url1, callback1);
    ajax(url2, callback2);
    ****************
    ajax(urln, callbackn);

    fai n chiamate indipendenti ed il tutto funziona

    ps(dentro la funzione ajax, le variabili debbono essere locali, cioè dichiarate tramite var variabile=valore
    Pietro

  6. #6
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,881
    pietro il gentilissimo sei tu che perdi tempo per spiegarmi, di questo ti sono infinitamente riconoscente...
    Però neppure io capisco perchè ho problemi: quelle chiamate consecutive che tu dici dovrebbero funzionare invece non funzionano e, appunto, ne chiedevo qui il motivo...
    Usate singolarmente vanno come un pallettone e invece messe una dietro l'altra non funzionano.
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

  7. #7
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    :master: uno degli errori più comuni è quello di dichiarare variabili globali quando si crea l'oggetto XMLHttpRequest

    se non metto la dichiarazione var objHTTP, objHTTP è globale e non funziona


    //creo l'oggetto che fa la richiesta http
    var objHTTP = null;
    if(window.XMLHttpRequest)
    {
    // Gecko (Firefox, Moz), KHTML (Konqueror, Safari), Opera, Internet Explorer 7
    objHTTP = new XMLHttpRequest();
    }
    else if(window.ActiveXObject)
    {
    try
    {
    // Internet Explorer 6
    objHTTP = new ActiveXObject("MSXML2.XMLHTTP");
    }
    catch(e)
    {
    // Internet Explorer 4,5
    objHTTP = new ActiveXObject("Microsoft.XMLHTTP");
    }
    }
    else
    {
    alert("Non è possibile creare l'oggetto che fa la richiesta http");
    return;
    }
    Pietro

  8. #8
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,881
    now it works
    credo fosse proprio un problema di variabili: il mio codice era frazionato in diverse funzioni per cui mi servivo di variabili globali (compresa quella per l'oggetto XMLHttpRequest)... mettendo tutto in un unico plico con variabili locali riesco a fare anche chiamate consecutive

    Grazie mille per le dritte
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

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 © 2026 vBulletin Solutions, Inc. All rights reserved.