2010-03-29 9 views
6

Ich versuche, zwei Ajax-Anforderungen parallel zu machen, wie dies mit jQuery:Warum werden meine JQuery .ajax-Anforderungen nicht parallel ausgeführt?

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); 
     } 
     }); 
    }); 

ich die Grundstruktur von this question bekam, aber immer noch meine Wünsche sind nicht parallel gemacht werden. "source1" dauert eine Weile und ich kann auf dem Server sehen, dass die zweite Anfrage nicht gemacht wird, bis die erste abgeschlossen ist.

Soweit ich das beurteilen kann, habe ich keine anderen aktiven Anfragen, also glaube ich nicht, dass es ein Problem mit der maximalen Anzahl paralleler Anfragen für den Browser ist. Verpasse ich hier etwas anderes?

+0

Was siehst du in Fiddler oder Firebug? – SLaks

+0

Was ist dein Backend? – serg

+0

Ich habe gerade meine Antwort von dieser verknüpften Frage erneut versucht und ein 'sleep (4);' in der PHP-Seite hinzugefügt - funktionierte immer noch wie erwartet. Alle 4 Anfragen wurden sofort ausgelöst und alle benötigten ca. 4 Sekunden. –

Antwort

13

jQuery stellt AJAX-Anfragen nicht in die Warteschlange. Wenn Sie sind sicher Sie machen keine anderen Anfragen Ihr Ende, wie wäre es mit dem Server? Vielleicht hat es nur einen Arbeiter?

BEARBEITEN: Und nur um sicherzustellen, habe ich es mit einem Skript getestet, das 2 AJAX POST-Anfragen an ein PHP-Skript startet, das für 5 Sekunden schläft. Sie standen nicht Schlange.

+1

Scheint wie ein serverbezogenes Problem. – BYK

+1

Ja, ich habe meinen Webserver in meiner Entwicklungs-Sandbox ohne die Option --fork ausgeführt, so dass nur jeweils eine Anfrage bearbeitet wurde. –

0

Was wäre, wenn Sie $ .post anstelle von $ .ajax verwenden würden. Das funktioniert für mich.

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

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

verwenden Sie PHP? verwendest du session_start()? Sitzungen können nicht parallel durch mehrere Anfragen geöffnet werden, sie warten nacheinander, um zu beenden, was sie tun.

+0

Mann, ich liebe dich !!!!!! Hab das total vergessen, 3 Stunden bis zum Post verloren ;-(Ein großes Dankeschön aus Südfrankreich ^^ –

Verwandte Themen