2010-02-14 5 views
6

Actualmente estoy implementando un tipo de HTTP Push usando Long Polling para navegadores que no admiten respuestas de múltiples partes de AJAX.Buscadores entrando en el estado "ocupado" en la solicitud de Ajax

Tengo que admitir que, si bien el lado del servidor está funcionando bien, soy relativly nuevo a extremo frontal Javascript desarrollo, y por lo tanto pueden haber cometido algunos errores obvios

El problema es el siguiente LongPolling funciona perfectamente en IE 6 , 7,8 y Firefox (aunque Firefox usa multiparte, también lo probé con encuestas largas), pero Safari y Chrome ingresan el estado "ocupado" de los navegadores durante las solicitudes de ajax. (Se muestran las ventanas esperan cursor y Safari también muestra su indicador "Carga" en la barra de título)

Esto por supuesto no es deseable ..

Aquí está mi código para hacer el largo sondeo basado en Jquery 1.4.1:


function MepSubscribeToQueueLongPoll(name, callback) { 

    var queueUrl = MepGetQueueUrl(name, "LongPoll"); 
    MepLongPollStep(queueUrl, callback); 
}; 

function MepLongPollStep(url, callback) { 
    $.ajax({ 
     url: url, 
     async: true, 
     cache: false, 
     success: function (data,status,request) { 
      callback(request.responseText); 
      MepLongPollStep(url, callback); 
     } 
    }); 
}; 

en cuenta que estoy pasando por alto los datos de análisis sintáctico funcionalidad de jQuery pasando el request.responseText directamente a la devolución de llamada, porque Jquery no parece apoyar respones ajax de varias partes y que quería ser consistente a través de la comunicación caminos.

Respuesta

3

Dado que no se ha mejorado la respuesta, me pregunto si un simple tiempo de espera resolvería el problema. Lo sentimos para dar un "adivinar" en lugar de una "Sé que esto es cierto respuesta", pero esto en realidad podría solucionarlo .:

function MepLongPollStep(url, callback) { 
    $.ajax({ 
     url: url, 
     async: true, 
     cache: false, 
     success: function (data,status,request) { 
      callback(request.responseText); 
      window.setTimeout(function(){ 
       MepLongPollStep(url, callback); 
      },10); 
     } 
    }); 
}; 
+0

Gracias, me parece saber a poco sobre el comportamiento del navegador, pero la punta fijo el problema en todos los navegadores – Gluber

Cuestiones relacionadas