Мне нужно сделать ajax-вызовы для цикла. ajax дает мне ответ text/html. Теперь я должен распечатать каждый ответ. Я делаю код ниже:Как напечатать ответ ajax с помощью jquery
function printBill(printBills, lastBillNo, type,taxType,outletId,date){
var printableObjects=[];
printBills.forEach(function(data){
lastBillNo++;
console.log(JSON.stringify(data));
$.ajax({
url: contextPath+"/print/"+lastBillNo+"/"+type+"/"+taxType+"/"+outletId+"/"+date,
type: "POST",
data: JSON.stringify(data),
contentType: 'application/json',
async:false,
success:function(response){
printableObjects.push(response); // pushing response to array.
}
});
});
return printableObjects;
}
Эта функция дает мне printableObjects как массив .. теперь я хочу, чтобы напечатать все объекты внутри этого объекта массива. Чтобы напечатать этот объект я использую следующий код:
function printIt(printableObj){
var counter = 0;
var timer = setInterval(function(){
printContent(printableObj[counter]);
counter++;
if (counter === printableObj.length) {
console.log("clearing timer :"+counter+" length of the obj :"+printableObj.length);
clearInterval(timer);
alert("Printing done ..");
window.location.href="takeAway";
}
},500);
console.log("============");
return true;
}
function printContent(printDoc){
//console.log("Printing object is :"+el);
var restorepage = document.body.innerHTML;
var printcontent = printDoc;
document.body.innerHTML = printcontent;
window.print();
document.body.innerHTML = restorepage;
}
Я посылаю это принт на sendToOne ноту. Всякий раз, когда печать происходит в тот момент, когда мой браузер попал. Пожалуйста, дайте мне знать любое решение. Мне не повезло.
Что это не работает? 'printContent' ничего не печатает? Вы ждали завершения ajax _before_, пытаясь распечатать? – tfrascaroli
Переместите цикл ForEach на printableObjects внутри успеха. И нет необходимости возвращать printableObjects из функции printBill. –
проблема браузер не отвечает после окончания печати ... –