jQuery ajax y la carga no se repetirán en Chrome o IE8

Encontré otros hilos que discuten .load y .ajax con Chrome e IE, pero ninguno con mi problema particular.

Estoy usando el siguiente código para solicitar una respuesta de un servlet. La respuesta debe ser de 3 líneas de texto/html, pero puedo ajustarme a texto/simple.

function checkProgress(){
    $.ajax({
        type: "GET",
        url: "/myServlet",
        success: function(result) {
            $('#data').text(result);
            setTimeout(checkProgress, 2000);
        }

    });​
}

La idea aquí es obtener el valor cada 2 segundos. y mostrar en un div.

<div id="status" style="display:none;">                
            <h3>Status</h3>                
                <p id="data"></p>
            </div>  

El problema que tengo es que esto solo se cargará 1 vez en Chrome e IE8. FF repetirá la carga y puedo ver el cambio de valor en el navegador.

Otros problemas que he visto hablan de que esto no funciona en absoluto en Chrome e IE8, pero el mío sí funciona. Simplemente no repetirá la carga.

También probé esto con .load porque quiero mantener cualquier formato html y encontré el mismo problema. Estoy dispuesto a omitir el formato por ahora para poder actualizar esto.

¡Cualquier ayuda es muy apreciada!

EDITADO Investigando Chrome un poco más, descubrí que detiene el script ajax cuando envío el formulario. Mi página inicia un servlet bastante largo. Estoy usando la llamada Ajax para devolver actualizaciones de estado del servlet. Cuando envío para iniciar el servlet, la secuencia de comandos que se ejecuta para informar el estado se detiene en Chrome. Sin errores. Simplemente deja de funcionar.

Esto parece un problema de subprocesamiento en Chrome. ¿Hay una mejor manera de hacer esto? ¿Puedo poner en marcha el ajax y el servlet al mismo tiempo con un evento onsubmit?

preguntado el 09 de marzo de 12 a las 15:03

Empleé una combinación de las dos primeras respuestas a continuación y ahora funciona en IE2. Chrome seguirá sin repetir la actualización. ¿Podría mi intervalo ser demasiado corto y activar algún indicador de seguridad en Chrome? -

2 Respuestas

IE almacena en caché las solicitudes ajax. ¿Qué tal agregar una cadena aleatoria junto con la URL para que sea una nueva solicitud cada vez?

Establezca el valor de la propiedad de caché en falso. Entonces, jquery agregará una marca de tiempo única a todas las solicitudes para que no sea una respuesta en caché cada vez.

function checkProgress(){

    $.ajax({
        type: "GET",
        url: "/myServlet" ,
        cache: false,
        success: function(result) {
            $('#data').text(result);
            setTimeout(checkProgress, 2000);
        }

    });​
}

respondido 09 mar '12, 15:03

Luego de más pruebas, el caché era el problema en IE8. Sin embargo, Chrome todavía se está resistiendo a mí. - Jeff

Tu codigo:

setTimeout(checkProgress, 2000);

Cámbialo a, te perdiste ():

setTimeout(function(){
    checkProgress();
}, 2000);

respondido 09 mar '12, 15:03

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.