2010-03-29 15 views
6

Sto cercando di fare due richieste Ajax in parallelo utilizzando jQuery come questo:Perché le richieste di JQuery .ajax non vengono eseguite in parallelo?

var sources = ["source1", "source2"]; 

    $(sources).each(function() { 
     var source = this; 
     $.ajax({ 
     async: true, 
     type: "POST", 
     data: {post: "data", in: "here"}, 
     url: "/my/url/" + source, 
     success: function(data) { 
      process_result(data); 
     } 
     }); 
    }); 

ho avuto la struttura di base da this question, ma le mie richieste ancora non sono stati fatti in parallelo. "source1" richiede un po 'di tempo per essere completato e posso vedere sul server che la seconda richiesta non viene eseguita fino al completamento del primo.

Per quanto posso dire, non ho altre richieste attive, quindi non penso che sia un problema con il numero massimo di richieste parallele per il browser. Mi manca qualcos'altro qui?

+0

Cosa vedi in Fiddler o Firebug? – SLaks

+0

Qual è il tuo back-end? – serg

+0

Ho appena ri-provato la mia risposta da quella domanda collegata e aggiunto un 'sleep (4);' nella pagina PHP - ha funzionato ancora come previsto. Tutte e 4 le richieste sono state attivate contemporaneamente e sono stati necessari circa 4 secondi per completare. –

risposta

13

jQuery non accoda le richieste AJAX. Se sei sicuro non stai facendo altre richieste alla fine, che ne dici del server? Forse ha solo un lavoratore?

EDIT: E solo per essere sicuro, l'ho testato con uno script che lancia 2 richieste POST AJAX a uno script PHP che dorme per 5 secondi. Non erano in coda.

+1

Sembra un problema relativo al server. – BYK

+1

Sì, eseguivo il mio server web nella sandbox di sviluppo senza l'opzione --fork, quindi gestiva solo una richiesta alla volta. –

0

Cosa succede se si utilizza $ .post anziché $ .ajax. Questo funziona per me.

var sources = ["source1", "source2"]; 

$(sources).each(function() { 
    var source = this; 
    $.post("/my/url/" + source, {post:"data", in:"here"}, function(data) { 
     process_result(data); 
    }); 
)}; 
7

stai usando php? stai usando session_start()? le sessioni non possono essere aperte in parallelo da più richieste, ad attendere una dopo l'altra per finire quello che stanno facendo.

+0

Uomo, ti amo !!!!!! Totalmente dimenticato questo, ha perso 3 ore fino al tuo post ;-(Un grande ringraziamento da parte del sud della Francia ^^ –

Problemi correlati