Ho avuto problemi con la natura asincrona di Javascript/JQuery.richieste ajax multiple con jquery
Diciamo quanto segue (non viene conteggiata alcuna latenza, per non renderla così problematica);
Ho ottenuto tre pulsanti (A, B, C) su una pagina, ognuno dei pulsanti aggiunge un elemento in un carrello con una richiesta di ajax ciascuno. Se metto un ritardo intenzionale di 5 secondi nello script lato server (PHP) e spinge i bottoni con 1 secondo di distanza, voglio che il risultato sia il seguente:
Request A, 5 seconds
Request B, 6 seconds
Request C, 7 seconds
Tuttavia, il risultato è come questo
Request A, 5 seconds
Request B, 10 seconds
Request C, 15 seconds
Questo deve significare che le richieste sono in coda e non vengono eseguite contemporaneamente, giusto? Non è questo il contrario di ciò che è async? Ho anche provato ad aggiungere un parametro get casuale all'URL per forzare un po 'l'unicità alla richiesta, ma senza fortuna.
Ho letto un po 'su questo. Se si evita di utilizzare lo stesso "oggetto richiesta (?)", Questo problema non si verificherà. È possibile forzare questo comportamento in JQuery?
Questo è il codice che sto usando
$.ajax(
{
url : strAjaxUrl + '?random=' + Math.floor(Math.random()*9999999999),
data : 'ajax=add-to-cart&product=' + product,
type : 'GET',
success : function(responseData)
{
// update ui
},
error : function(responseData)
{
// show error
}
});
Ho anche provato sia GET e POST, nessuna differenza.
Desidero che le richieste vengano inviate correttamente quando si fa clic sul pulsante, non quando la richiesta precedente è finita. Voglio che le richieste vengano eseguite contemporaneamente, non in una coda.
Puoi pubblicare qui il tuo codice javascript. Di default '$ .ajax' è asincrono –
@Emil, rimuovi Math.Random ecc. E semplicemente usa' cache: false' – Anders
Ho pensato che jquery usi una nuova connessione asincrona per ogni chiamata. –