Ясно.
В началото се обърках какво искаш да постигнеш, но сега май разбрах.
beforeSend() в случая не ти върши работа, защото в момента, в който се изпрати заявката, beforeSend приключва.
Това, което можеш да направиш е преди Ajax request-а да покажеш loading gif-а и чак, когато зареди темплейта да го премахнеш.
Но между другото, можеш да направиш следното нещо.
1. В #panel контейнера си добави спинъра с default display: none
2. Скрипта го направи така:
Javascript code:
$('#panel > #spinner').bind('ajaxStart', function() {
$(this).show();
}).bind('ajaxStop', function() {
$(this).hide();
});
$.ajax({
url: 'index.php/#route/?route=login/login',
dataType: 'html',
cache: false,
success: function(html) {
$('#panel').append(html);
},
error: function(xhr, ajaxOptions, thrownError) {
alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
Да речем, че #spinner ти съдържа спинъра с default display: none;
Това, което става е - показва ти спинъра, когато AJAX рикуеста започне и се скрива, когато приключи. Когато приключи рикуеста се задейства success евента и получаваш съдържанието. Така би трябвало да нямаш забавяне.