2010-03-29 9 views
6

que estoy tratando de hacer dos peticiones Ajax en paralelo usando jQuery así:¿Por qué mis solicitudes JQuery .ajax no se realizan en paralelo?

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

que tiene la estructura básica de this question, pero mis peticiones aún no se están haciendo en paralelo. "source1" tarda un tiempo en completarse, y puedo ver en el servidor que la segunda solicitud no se realiza hasta que se complete la primera.

Por lo que puedo decir, no tengo ninguna otra solicitud activa, por lo que no creo que sea un problema con la cantidad máxima de solicitudes paralelas para el navegador. ¿Me estoy perdiendo algo más aquí?

+0

¿Qué ves en Fiddler o Firebug? – SLaks

+0

¿Cuál es tu back-end? – serg

+0

Acabo de volver a probar mi respuesta a partir de esa pregunta vinculada y agregué un 'sleep (4);' en la página de PHP; todavía funcionó como se esperaba. Las 4 solicitudes se dispararon a la vez y todas tardaron ~ 4 segundos en completarse. –

Respuesta

13

jQuery no hace cola en las solicitudes de AJAX. Si está seguro no está haciendo ninguna otra solicitud, ¿qué tal el servidor? Tal vez solo tiene un trabajador?

EDIT: Y para asegurarme, lo probé con un script que lanza 2 solicitudes AJAX POST a un script PHP que duerme durante 5 segundos. No fueron puestos en cola.

+1

Parece un problema relacionado con el servidor. – BYK

+1

Sí, estaba ejecutando mi servidor web en mi entorno limitado de desarrollo sin la opción --fork, por lo que solo manejaba una solicitud a la vez. –

0

¿Qué pasa si usaste $ .post en lugar de $ .ajax. Esto funciona para mí

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

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

¿Estás utilizando php? ¿Estás usando session_start()? las sesiones no se pueden abrir en paralelo por múltiples solicitudes, ya que esperarán una detrás de otra para terminar lo que están haciendo.

+0

¡¡Hombre, te amo !!!!!! Totalmente olvidé esto, perdí 3 horas hasta tu publicación ;-(Muchas gracias desde el sur de Francia ^^ –

Cuestiones relacionadas