Как то так. Изменить по необходимости.
$.post('/YourAjaxRequest', { your ajax data }, function() {
$.fancybox.close();
}, 'json');
Это закроет диалоговое окно, когда запрос будет завершен, независимо от того, сколько времени это займет, и не зависит от времени ожидания 20 секунд. Если вы хотите закрыть окно через 20 секунд после ответа, вы можете сделать это:
$.post('/YourAjaxRequest', { your ajax data }, function() {
setTimeout($.fancybox.close, 20000);
}, 'json');
Чтобы указать, что вы отправляете запрос, вы можете использовать showActivity
:
$.fancybox.showActivity();
$.post('/YourAjaxRequest', { your ajax data }, function() {
$.fancybox.close();
}, 'json');