Как на ajax дождаться выполнение скрипта

M
На сайте с 03.06.2012
Offline
73
1766

Есть код


function getdate(date) {
jQuery.ajax({
type: 'POST',
url: 'index.php?option=com_dinner&view=dinnercartlist&tmpl=component',
data: '&date='+date,
success: function(data) {
return data;
}

});

}

var html;

function printmenu() {
html = '<link rel="stylesheet" href="/templates/dinner/css/print.css" type="text/css" />';
html += '<div><img src="/components/com_dinner/images/print_logo.png"></div>';
date = jQuery('#daylist').val();
date = date.split(',');
for(var i=0; i<date.length; i++){
html += getdate(date);
}
var prwin = open('');
prwin.document.open();
prwin.document.writeln('<html><head><title>Версия для печати<\/title><\/head><body text="#000000" bgcolor="#FFFFFF"><div onselectstart="return false;" oncopy="return false;">');
prwin.document.writeln('<div style="margin-bottom:5px;"><a href="javascript://" onclick="window.print();">Печать<\/a> • <a href="javascript://" onclick="window.close();">Закрыть окно<\/a><\/div><hr>');
prwin.document.writeln(html);
prwin.document.writeln('<\/div><\/body><\/html>');


}

Этот код в цикле должен получить html страниц что бы вывести на печать. но страница открывается пустой поскольку еще не выполнился аякс запрос. Подскажите как пожно решить эту проблему. Спасибо!

Оптимизайка
На сайте с 11.03.2012
Offline
396
#1

doument.writeln надо перенести в обработчик success у ф-ции getdate, т.е. переписать ваш код с цикла на рекурсивные вызовы getdate

⭐ BotGuard (https://botguard.net) ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!
DP
На сайте с 24.04.2012
Offline
16
#2

Не изменяя структуру кода ajax можно вызывать с параметром async: false. Но это заморозит страницу пока не придут все ответы, что может быть не сомсем приемлимо с точки зрения UX.

M
На сайте с 03.06.2012
Offline
73
#3
Оптимизайка:
doument.writeln надо перенести в обработчик success у ф-ции getdate, т.е. переписать ваш код с цикла на рекурсивные вызовы getdate

Да все получилось. спасибо!

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий