puoi provare ad usare i deferred object visto che le chiamate ajax di jquery ritornano una promise


codice:
/* mostra loader */

$.getJSON("url")
   .done(function() { 
       /* nascondi loader */
       /* fai qualcosa */
   })
   .fail(function() {  
      /* errore, fai qualcos'altro */
   })