Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Printing page from AJAX

I wrote a simple generator to create offers. It works good, but I got the problem with printing. When I try a print page from AJAX request, I getting index page not data from AJAX request.

What's wrong?

Additionally, data from AJAX is correct.

$.post({
    type: "POST",
    url: "generate.php",
    data: {pid: pid, net: net, brutto: brutto, contractor: contractor, delivery: delivery, term: term},
}).done(function(data) {
    window.print(data);
});

Example for PHP file :

<?php
$foo = "foo";
ob_start();
?>

<p><?php echo $foo; ?></p>

<?php 

$result = ob_get_flush();
echo $result;

?>
like image 497
sauero Avatar asked Jan 04 '23 01:01

sauero


2 Answers

The print() method doesn't take any arguments. So, if you want to print data from variable, you can use this method:

$.post({
    type: "POST",
    url: "generate.php",
    data: {pid: pid, net: net, brutto: brutto, contractor: contractor, delivery: delivery, term: term},
}).done(function(data) {
    printWindow = window.open('');
    printWindow.document.write(data);
    printWindow.print();
});

this will open a new tab, with value of data on screen and ready to print.

like image 102
mega6382 Avatar answered Jan 05 '23 14:01

mega6382


The print() method:

Opens the Print Dialog to print the current document.

It doesn't take any arguments (so any arguments you pass it will be ignored).

If you want to print data you have in a variable, you need to put it in the document the user is viewing.

like image 42
Quentin Avatar answered Jan 05 '23 16:01

Quentin