2011-12-30 17 views
10

mi aspetterei che il codice per mostrare 'mamma ciao' tra il <div id='job-status'></div> sulla pagina di origine, ma non:Perché non viene richiamato il mio callback jQuery.get()?

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

La funzione get() viene attivato: vedo la richiesta di arrivare al mio server e una risposta di 200 OK contenente il mio codice JSON. Ma un avviso() all'interno del corpo function(data) { ... } non viene mai chiamato, né viene visualizzato "Ciao mamma" sulla pagina. Tuttavia, se la spoglierò il codice fino a:

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

... poi lo fa di visualizzazione 'ciao mamma' all'interno del <div id='job-status'></div>.

IASISO (Sono sicuro che sia qualcosa di ovvio), ma cosa mi manca?

+0

Vedete il risultato positivo negli strumenti firebug/chrome dev? –

+1

Sei sicuro che la risposta sia JSON valida? jQuery continuerà a reindirizzare al callback 'error' (o [' deferred.fail'] (http://api.jquery.com/deferred.fail/) per '$ .get') se l'analisi fallisce. –

+1

Sì, non vedo l'acronimo che sta prendendo piede. Per quanto riguarda la tua domanda, sei sicuro che l'oggetto JSON che viene restituito sia valido e strutturato correttamente? Inoltre, si tratta di una richiesta o dominio interdominio dello stesso dominio? – Aaron

risposta

11

La mia ipotesi è che si restituisce una risposta json non valida. Prova a metterlo nell'azione del tuo controller

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

Sì, era così. Ho appena saputo che JSON non accetta una virgola finale in un elenco di elementi (Ruby mi ha viziato) e che jQuery.get() non riesce in modo corretto su JSON mal formato. Grazie. –

Problemi correlati