Генериране на PDF с DOMPDF с codeigniter при натискане на бутон след изпращане на данни в базата данни

Имам въпрос относно създаването на PDF с DOMPDF. По принцип имам формуляр, който изпраща данни към DB с jquery, който изглежда по-долу

$('#submit').click(function(){
var submit = $.ajax({
    url: 'setController.php',
    type: 'POST',
    data: dataString,
    success: function(msg){
        alert("sent");

        },
        error: function(msg){
    alert("fail");
        }
    });
});

SetController извиква моя setModel, който връща изобразяване на моя html, след като е изпратил данните в DB. Което изглежда така.

$html = $this -> setModel  -> setData($arr1,$arr2);

Това връща проста html таблица.

След това натискам това надолу към dompdf, както следва

    $this->load->helper(array('dompdf', 'file'));
    pdf_create($html, 'report');

Проблемът ми е, че когато се щракне върху бутона с ID #submit, не се връща pdf като изтегляне. Ако обаче трябваше да навигирам директно до моя url

"http://www.url/setData"

Връщам с изтеглен pdf файл без данни в него.

Може ли някой да предизвика изтегляне на pdf файл, след като се щракне върху бутона „Изпращане“?

Благодаря ти.


person BaconJuice    schedule 15.07.2013    source източник


Отговори (1)


Желаното от вас взаимодействие за потребителя да изпрати формуляра, след което да бъде представено с диалогов прозорец за изтегляне на PDF? Като използвате AJAX за управление на процеса, няма да ви бъде предложена възможност да изтеглите PDF, тъй като процесът AJAX прави повикването и получава отговора. Всичко това в контекста на текущата страница.

Вие можете да заснемете отговора, след което да отворите нов прозорец и да го попълните с вашия PDF файл. Но бих ви посъветвал да не го правите, освен ако нямате истинска нужда. Не правете процеса по-труден, отколкото трябва. Най-лесният метод е да направите нормална POST заявка вместо AJAX POST заявка. Обикновено потребителят никога няма да напусне текущата страница, защото процесът на изтегляне ще отмени навигацията в страницата.

Ако възнамерявате да направите това с помощта на AJAX, има много свързани въпроси.

person BrianS    schedule 15.07.2013
comment
Напълно си прав! Удивително е как винаги търсим да разрешим нещо сложно, когато отговорът може да е толкова прост! Благодаря ти. Вместо това ще направя нормален POST. - person BaconJuice; 16.07.2013