2010-12-15 56 views
11

Estoy tratando de mostrar una imagen de carga mientras se está ejecutando mi llamada ajax, sin embargo, usar el atributo beforeSend no cambia mi área de resultados.Cargando imagen gif mientras jQuery ajax se está ejecutando

$.ajax({ 
    url: "/answer_checker.php", 
    global: false, type: "POST", 
    data: ({...clipped...}), 
    cache: false, 
    beforeSend: function() { 
    $('#response').text('Loading...'); 
    }, 
    success: function(html) { 
    $('#response').html(html); 
    } 
} 

Gracias de antemano.

+0

¿Cuáles son sus otras opciones, por ejemplo, 'async: false' por casualidad? –

+0

'global: falso, tipo:" POST ", datos: ({...}), caché: falso' No estoy usando' async' –

Respuesta

8

tengo una solución, puede que no sea la mejor manera de hacerlo pero tiene trabajado en este caso.

$('input').keyup(function() { 

    $('#response').text('loading...'); 

    $.ajax({ 
    url: "/answer_checker.php", 
    global: false, type: "POST", 
    data: ({...clipped...}), 
    cache: false, 
    success: function(html) { 
     $('#response').html(html); 
    } 
    }); 
}); 

Al establecer el contenido resonce antes de llamar a la función ajax permanece mostrando el texto de carga hasta que la llamada ajax actualiza el mismo contenido.

Gracias a todos los que se tomaron el tiempo para responder.

Alan

+0

esta es una manera fácil y sencilla de hacer, yo hago lo mismo siempre –

3

Usted está faltaban una coma después de cache: false

+0

Gracias por su respuesta, acabo de agregar las opciones adicionales que estaba usando. –

2

También puede utilizar el siguiente:

$('#tblLoading').ajaxStart(function() { $(this).show(); }); 
$('#tblLoading').ajaxComplete(function() { $(this).hide(); }); 
19

Tuve un problema similar. Para resolver mi problema, reemplacé .text, en la sección beforeSend, con .html y creé una etiqueta html para insertar en el elemento que contiene mi estado. La función de éxito no reemplazó el contenido creado por la función .text() sino que reemplazó el contenido creado por la función .html().

$.ajax({ 
    url: "/answer_checker.php", 
    global: false, type: "POST", 
    data: ({...clipped...}), 
    cache: false, 
    beforeSend: function() { 
    $('#response').html("<img src='/images/loading.gif' />"); 
    }, 
    success: function(html) { 
    $('#response').html(html); 
    } 
} 
Cuestiones relacionadas