Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1

    Ajax e xmlHttp.readyState

    Ciao,
    utilizzo solitamente Ajax per caricamenti da db o piccole modifiche che l'utente può effettuare senza dover ricaricare la pagina e funziona perfettamente, aggiornando gli elementi modificati (vado a scrivere il xmlHttp.responsetext come innerHtml).
    Il problema si presenta quando voglio fare eseguire queste operazioni in modo ciclico su più elementi selezionati:
    es.: da una tabella l'utente seleziona più elementi e clicca un pulsantino per passarli da "stato0" a "stato1"...
    Le query vengono tutte eseguite perfettamente ma è l'aggiornamento dei dati mostrati a video che non funziona e solo l'ultimo elemento viene aggiornato;
    presumo che ciò sia dovuto alla velocità dell'esecuzione di queste operazioni che non permette al browser di trovare il tempo di aggiornarsi se non per l'ultimo elemento...
    Come posso risolvere ??
    La funzione che aggiorna la pagina fa già un controllo sullo stato dell'xmlhttp:
    codice:
    if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
    {
    ...
    }
    Che altro ??
    Il mio futuro ?? Io lo conosco, è il PARTY !! (Party Man)
    ...e ricordati che prima o poi il po-chi gira (Il Maestro)

  2. #2
    scusa, vuoi dire che l'utente seleziona più checkbox e poi tu fai fare una richiesta AJAX per OGNI checkbox?

  3. #3
    Ehmmm...sì...!!
    Capisco che sia "sconveniente" ma sarebbe una cosa embrionale per sfruttare lla funzione che c'è già e gestisce bene Ajax...!!
    Come fai tu una cosa del genere ?? Come ti comporti poi col response text che utilizzi per aggiornare ogni elemento se è riferito a tutti gli elementi relativi alla richiesta ??
    Il mio futuro ?? Io lo conosco, è il PARTY !! (Party Man)
    ...e ricordati che prima o poi il po-chi gira (Il Maestro)

  4. #4
    dunque, se ho capito bene, checkbox checkkato => stato=1, checkbox non checkkato => stato=0. Allora, NON aggiornare tutta la tabella ma SOLO la riga che interessa la chiamata AJAX.

    Se volessi fare le cose per bene, farei una chiamata JSON che ritorna i valori da inserire nelle diverse celle che poi sostituirei con le funzioni DOM.

  5. #5
    Non esattamente:
    gli stati che ogni elemento può assumere sono diversi (es.:1,2,3,4,5,...),
    l'utente ha la possibilità di modificare i singoli elementi con dei pulsantini a fianco di ogni riga (diciamo che uso una funzione "cambiastato(id,valore)" che esegue la chiamata Ajax e si occupa di aggiornare il valore della cella relativa), vicino ai quali ho posto anche un checkbox al quale appunto fa riferimento una funzione JS che altro non dovrebbe fare se non: rilevare i checkbox selezionati e ciclare la funzione "cambiastato" su ognuno di questi !!

    Sta di fatto che il meccanismo funziona, tutti gli elementi selezionati vengono aggiornati sul db, ma non sulla pagina eccetto l'ultimo...!!
    Sto cercando di fare qualche prova inserendo un ritardo (settimeout) per vedere se è appunto un problema di "lentezza del server"...o simile.

    Altri consigli ??

    Grazie !!
    Il mio futuro ?? Io lo conosco, è il PARTY !! (Party Man)
    ...e ricordati che prima o poi il po-chi gira (Il Maestro)

  6. #6
    riscrivi la funzione che invia la richiesta AJAX perché invii TUTTI i parametri da modificare con UNA richiesta.

  7. #7
    Originariamente inviato da rasega
    Come ti comporti poi col response text che utilizzi per aggiornare ogni elemento se è riferito a tutti gli elementi relativi alla richiesta ??
    Sinceramente non mi convince molto inviare una richiesta complessiva perchè non capisco poi come gestire il risultato complessivo che la funzione mi ritornerà,
    vedo improbabile far ritornare alla funzione un dato dettagliato dei risultati, no ?
    (considera che ho semplificato e sintetizzato il discorso "stato" con 1,2,3,4,...)

    Se però la soluzione in questi casi è quella che tu mi consigli, seguirò lo "stato dell'arte" di Ajax... ...ma sinceramente preferirei venir a sapere che ci sono altre soluzioni

    Thanx !!
    In ogni caso il tuo consiglio mi è stato utile...!!
    Il mio futuro ?? Io lo conosco, è il PARTY !! (Party Man)
    ...e ricordati che prima o poi il po-chi gira (Il Maestro)

  8. #8
    Nessun altro ha avuto problemi o dubbi del genere che può darmi qualche consiglio in merito ??
    Come gestisco i dati complessivi ritornati nel caso di invio unico di tutti i dati ??
    Il mio futuro ?? Io lo conosco, è il PARTY !! (Party Man)
    ...e ricordati che prima o poi il po-chi gira (Il Maestro)

  9. #9
    basta che gli mandi i dati in un array...

    per dirla selezioni 4 check:

    metti di avere i name ed i value degli selezionati

    invii in GET o in POST

    check[name1]=value1&check[name2]=value2&check[name3]=value3&check[name4]=value4

    Nel file che chiami con AJAX otterrai

    $_GET['check']['name1'] per il valore del primo, $_GET['check']['name2'] per il secondo e così via. Oppure non mandare nemmeno i name ed usi solo gli indici

    check[0]=value1&check[1]=value2&check[2]=value3&check[3]=value4

    $_GET['check'][0] per il primo e così via.

  10. #10
    Ok, questa è solo la prima parte del lavoro,
    sta di fatto che poi credo sia necessario anche tornare una conferma che tutte le query sono andate a buon fine ed utilizzare questo dato per mostrare il risultato all'utente,
    ed è questo punto che mi riesce un po' oscuro !!
    Il mio futuro ?? Io lo conosco, è il PARTY !! (Party Man)
    ...e ricordati che prima o poi il po-chi gira (Il Maestro)

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.