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

    "bloccare" una richiesta ajax

    Nel senso:
    sull' onkeyup di un input text, invoco una chiamata in ajax per effettuare una ricerca

    Quindi, man mano che l'utente digita i caratteri di una stringa, popolo una tabella con i vari risultati.

    Funziona. Il problema è il lag.
    Faccio un esempio, in modo da capire meglio:

    voglio cercare "pippo". Scrivo pippo, e mi compare un solo risultato. Se pero è rimasta qualche chiamata "appesa" (mentre scrivevo "p", "pi", "pip", "pipp"), mi vedo ripopolare la lista dei risultati come se avessi scritto, per esempio, "pip".

    Ergo, man mano che l'utente scrive la parola, come posso "bloccare" le richieste predenti (che potrebbero non aver provocato nessun cambiamento sul risultato, a causa del lag)?

  2. #2
    Devi chiamare il metodo abort:
    codice:
    ...
    var req = new XMLHttpRequest //( o ActiveX a seconda del browser )
    ...
    req.abort();
    ...
    In pratica ti conviene fare in modo che la funzione che tu usi per fare una richiesta ajax ti restituisca alla fine l'oggetto XMLHttpRequest stesso, in modo appunto da poter "abortire"

  3. #3
    Originariamente inviato da Mega69
    Devi chiamare il metodo abort:
    codice:
    ...
    var req = new XMLHttpRequest //( o ActiveX a seconda del browser )
    ...
    req.abort();
    ...
    In pratica ti conviene fare in modo che la funzione che tu usi per fare una richiesta ajax ti restituisca alla fine l'oggetto XMLHttpRequest stesso, in modo appunto da poter "abortire"
    perdonami... non t'ho afferrato bene...

    io sto dentro un onkeyup, quindi man mano che l'utente preme un tasto effettuo una chiamata var req = new XMLHttpRequest

    e quando devo "abortire"?
    :master:

  4. #4
    Uppettino...

  5. #5
    Ti do l'input. Creati un array globale, ad esempio
    var mieRichieste = [];
    nella funzione che fa un richiesta metti la seguente riga:
    mieRichieste.push(richiesta);
    dove richiesta è l'oggetto XMLHttpRequest
    subito dopo questa riga ne metti un altra:
    mieRichieste[mieRichieste.length - 2].abort();

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