2011-12-30 9 views
10

yo esperaría que el código siguiente para mostrar 'Hola mamá' entre el <div id='job-status'></div> en la página de origen, pero no es así:¿Por qué no se llama mi callback jQuery.get()?

$(function() { 
    function show_status() { 
     $.get("<%= status_jobs_path -%>", 
       function(data) { 
        $('#job-status').html('hi mom'); 
       }, 'json'); 
    } 
    show_status(); 
}); 

La función get() que se dispare: Veo la solicitud de llegar a mi servidor y una respuesta 200 OK que contiene mi código JSON. Pero nunca se llama a una alerta() dentro del cuerpo function(data) { ... }, ni se muestra 'hi mom' en la página. Sin embargo, si me tira hacia abajo el código a:

$(function() { 
    function show_status() { 
     $('#job-status').html('hi mom'); 
    } 
    show_status(); 
}); 

... entonces lo hace la pantalla 'Hola mamá' en el <div id='job-status'></div>.

IASISO (Estoy seguro de que es algo obvio), pero ¿qué me estoy perdiendo?

+0

¿Ve el resultado exitoso en firebug/chrome dev herramientas? –

+1

¿Estás seguro de que la respuesta es JSON válida? jQuery seguirá redirigiendo a la devolución de llamada 'error' (o [' deferred.fail'] (http://api.jquery.com/deferred.fail/) para '$ .get') si falla el análisis. –

+1

Sí, no veo esa sigla cogiendo en. Con respecto a su pregunta, ¿está seguro de que el objeto JSON que se devuelve es válido y está estructurado adecuadamente? Además, ¿se trata de una solicitud del mismo dominio o dominio cruzado? – Aaron

Respuesta

11

Supongo que devuelve una respuesta json no válida. Intente poner esto en su acción de controlador

render :json => { :message => "Hi mom" }, :status => :ok 
+1

Sí, eso fue todo. Acabo de enterarme de que JSON no acepta una coma final en una lista de elementos (Ruby me ha echado a perder) y que jQuery.get() falla silenciosamente en JSON malformado. Gracias. –

Cuestiones relacionadas