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

    abortire la chiamata j ajax prima che parte un'altra

    Ciao ragazzi ho un quesito che non riesco a risolvere, ho una form dove l'utente con onkeup inserisce cosa vuole cercare nel databse, però ad ogni tasto premuto avviamente parte una chiamata ed io non voglio avere 45 chiamate consecutive che cercano ma una sola ovvero l'ultima, vi posto il mio codice:

    codice:
    function getArticle(name) {
        var xhar = 0;
        var id = $("#"+name+"").val();
        xhar = $.ajax({
            beforeSend : function(dd) { if(xhar != 0) { xhar.abort(); }; },
            url:"script_js/php/selectArticle.php",
            type:'POST',
            data:"value="+name+"&id="+id+"",
            success: function(data) { $("#table").html(data) }
        }); 
         
        
    }
    come posso abortire la precendente chiamata?

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Ma non hai chiamate in attesa al rilascio del tasto la chiamata parte contestualmente all'evento, se non vuoi sovraccaricare il server limita i caratteri da un minimo ad un massimo la ricerca parte da 3 > 10.
    Per annullare una chiamata dovresti metterla in "attesa", pertanto al keyup lanci una funzione slipAjax() che mette in "coda/stend by" la richiesta con un setTimeout impostato a x secondi, se in questo lasso di tempo l'utente preme un altro tasto con keypress lanci una funzione che annulli il setTimeout della funzione slipAjax. Valuta se ne vale la pena
    Ultima modifica di cavicchiandrea; 21-09-2014 a 12:58
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it L'avatar di Azucchi
    Registrato dal
    Jul 2014
    Messaggi
    123
    Quote Originariamente inviata da cavicchiandrea Visualizza il messaggio
    Ma non hai chiamate in attesa al rilascio del tasto la chiamata parte contestualmente all'evento, se non vuoi sovraccaricare il server limita i caratteri da un minimo ad un massimo la ricerca parte da 3 > 10.
    Per annullare una chiamata dovresti metterla in "attesa", pertanto al keyup lanci una funzione slipAjax() che mette in "coda/stend by" la richiesta con un setTimeout impostato a x secondi, se in questo lasso di tempo l'utente preme un altro tasto con keypress lanci una funzione che annulli il setTimeout della funzione slipAjax. Valuta se ne vale la pena
    Andrea, ma in questo caso va messo async a false? Mi spiego, se la richiesta HTTP è asincrona e il server è occupato può capitare che una richiesta AJAX ultima venga eseguita prima della precedente? Restituendo quindi il valore non esatto.

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Direi di no, essendo legata ad un keyup la query di ricerca non può essere sbagliata, oltretutto le chiamate sincrone vanno gestite con oculatezza avendo grosse conoscenze sia lato server con query e script ottimizzati e una gestione di eventuali sovraccarichi server per liberare il browser nel 99% dei casi non si usano
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Utente di HTML.it L'avatar di Azucchi
    Registrato dal
    Jul 2014
    Messaggi
    123
    Quote Originariamente inviata da cavicchiandrea Visualizza il messaggio
    Direi di no, essendo legata ad un keyup la query di ricerca non può essere sbagliata, oltretutto le chiamate sincrone vanno gestite con oculatezza avendo grosse conoscenze sia lato server con query e script ottimizzati e una gestione di eventuali sovraccarichi server per liberare il browser nel 99% dei casi non si usano
    Chiaro, grazie della delucidazione

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.