Генерация PDF с помощью DOMPDF с помощью codeigniter при нажатии кнопки после отправки данных в базу данных

У меня есть вопрос относительно создания PDF с помощью DOMPDF. В основном у меня есть форма, которая отправляет данные в БД с 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 после того, как он отправил данные в БД. Который выглядит так.

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

Это возвращает простую html-таблицу.

Затем я нажимаю это на dompdf следующим образом

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

Моя проблема заключается в том, что при нажатии кнопки с идентификатором #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