Ajax 게시 후 작업이 실행되지 않음

Nielsv

이미지와 highcharts 이미지가있는 pdf 파일을 생성하려고합니다. 버튼을 클릭 할 때 수행하는 작업입니다.

('#button').click(function() {
    var quizid = <?php echo json_encode($quizid); ?>;
    var chart = Highcharts.charts[0];

    canvg(document.getElementById('canvas'), chart.getSVG())

    var canvas = document.getElementById("canvas");
    var img = canvas.toDataURL("image/png");

    //document.write('<img src="'+img+'"/>');

    // AJAX CALL TO ACTION
    $.ajax({
        url: '/results/savepdf',
        type:"POST",
        data: {quizid: quizid, image: img},
        success: function(data) {
            console.log("ajax call succces");
        },
        error: function (xhr, ajaxOptions, thrownError) {
            alert(xhr.status);
            alert(thrownError);
        }
    });

});

내 행동에는 다음이 있습니다.

public function savepdfAction(){
    $this->_helper->layout->disableLayout();
    $this->_helper->viewRenderer->setNoRender();

    if(isset($_POST['quizid']))
        $quizid = $_POST['quizid'];
    if(isset($_POST['image']))
        $image = $_POST['image'];

    // SAVE THE PDF OR WORD

    // INCLUDE TCPDF LIBRARY
    require_once 'tcpdf/tcpdf.php';

    try {
        // create new PDF document
        $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

        $pdf->SetCreator(PDF_CREATOR);
        $pdf->SetAuthor('Nicola Asuni');
        $pdf->SetTitle('TCPDF Example 009');
        $pdf->SetSubject('TCPDF Tutorial');
        $pdf->SetKeywords('TCPDF, PDF, example, test, guide');

        $pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 009', PDF_HEADER_STRING);

        $pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
        $pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));

        $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);

        $pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
        $pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
        $pdf->SetFooterMargin(PDF_MARGIN_FOOTER);

        $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);

        $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);

        $pdf->AddPage();

        $pdf->setJPEGQuality(75);

        $imgdata = base64_decode('iVBORw0KGgoAAAANSUhEUgAAABwAAAASCAMAAAB/2U7WAAAABlBMVEUAAAD///+l2Z/dAAAASUlEQVR4XqWQUQoAIAxC2/0vXZDrEX4IJTRkb7lobNUStXsB0jIXIAMSsQnWlsV+wULF4Avk9fLq2r8a5HSE35Q3eO2XP1A1wQkZSgETvDtKdQAAAABJRU5ErkJggg==');

        $pdf->Image('@'.$imgdata);

        $pdf->Image('/images/logo.png', 25, 40, 154, 25, 'PNG', 'http://www.surveyanyplace.com', '', true, 150, '', false, false, 1, false, false, false);

        $horizontal_alignments = array('L', 'C', 'R');
        $vertical_alignments = array('T', 'M', 'B');

        $pdf->Output('example_009.pdf', 'I');

    }
    catch (Exception $e) {
        die ('Application error: ' . $e->getMessage());
    }
}

보시다시피 전송 된 매개 변수없이 pdf 파일을 표시하고 싶습니다 (테스트 용).

작동하지 않습니다 ....

아약스 호출없이 이것을 시도하면 잘 작동합니다 ...

이 응답을 받았습니다.

TCPDF 오류 : 일부 데이터가 이미 출력되었습니다. PDF 파일을 보낼 수 없습니다.

나는 오류를 검색하고 넣어이 문제를 해결할 수 있다고 읽고 ob_end_clean();당신의 전 $pdf->Output('example_009.pdf', 'I');. 그리고 내가 그것을했을 때 나는 당신이 여기에서 볼 수있는 또 다른 응답을 얻었다 .

Landervdb

.pdf 파일은 바이너리 데이터이므로 Ajax 요청을 사용하면 안됩니다. 빠른 검색 후이 jQuery 플러그인을 찾았습니다.

매우 작은 함수이며 제출하는 숨겨진 필드가있는 임시 양식을 생성합니다. 아마도 가장 아름다운 솔루션은 아니지만 작동 할 것입니다. 그래도 테스트하지 않았습니다 ...

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

ajax 실행 후 jQuery 변수가 업데이트되지 않음

분류에서Dev

장기 실행 작업이 Sidekiq 다시로드 후 다시 시작되지 않음

분류에서Dev

실행 완료 후 Jenkins 작업이 중지되지 않음

분류에서Dev

.load ajax 후 선택 옵션이 올바르게 표시되지 않음

분류에서Dev

Linux Mint를 다시 시작한 후 WINE에서 Steam이 실행되지 않음

분류에서Dev

성공 메시지 후 Ajax 팝업이 닫히지 않음

분류에서Dev

선택 변경시 Ajax 호출이 실행되지 않음

분류에서Dev

배포 업데이트 실패 후 Ubuntu가 시작되지 않음

분류에서Dev

20.04에 업데이트 한 후 Chromium이 시작되지 않음

분류에서Dev

Ajax 양식이 게시되지 않음

분류에서Dev

Microsoft Azure 시작 작업이 실행되지 않음

분류에서Dev

npm 시작 후 Github 작업이 작동하지 않음

분류에서Dev

13.10 업그레이드 후 시작되지 않음

분류에서Dev

업데이트 후 Apache가 시작되지 않음

분류에서Dev

13.10 업그레이드 후 시작되지 않음

분류에서Dev

WebStorm 8 EAP가 업데이트 후 시작되지 않음

분류에서Dev

업그레이드 후 Ubuntu 14.04가 시작되지 않음

분류에서Dev

OSX Yosemite 업그레이드 후 Apache가 시작되지 않음

분류에서Dev

15.10 업그레이드 후 Ubuntu가 시작되지 않음

분류에서Dev

AJAX 성공이 실행되지 않음

분류에서Dev

MVC 작업에 AJAX 게시를 수행 할 때 JSON이 객체로 역 직렬화되지 않음

분류에서Dev

iOS 7에서 처음 실행 한 후 LeftBarButtonItem이 표시되지 않음

분류에서Dev

$ .when ()이 실행되지 않은 후 .done (function ())의 jquery ajax 코드

분류에서Dev

페이지 매김 클릭 후 PHP / Ajax / jquery 작업이 작동하지 않음

분류에서Dev

업데이트 시스템 전체 업데이트 후 Gem 설치가 실행되지 않음 Arch Linux

분류에서Dev

X 패키지 업그레이드 후 실행되지 않음

분류에서Dev

시간대 변경 후 크론 작업이 시작되지 않음

분류에서Dev

컴파일 시도 후 AngularJS ng-click이 실행되지 않음

분류에서Dev

업데이트 후 Zeus + Poseidon이 실행되지 않음

Related 관련 기사

  1. 1

    ajax 실행 후 jQuery 변수가 업데이트되지 않음

  2. 2

    장기 실행 작업이 Sidekiq 다시로드 후 다시 시작되지 않음

  3. 3

    실행 완료 후 Jenkins 작업이 중지되지 않음

  4. 4

    .load ajax 후 선택 옵션이 올바르게 표시되지 않음

  5. 5

    Linux Mint를 다시 시작한 후 WINE에서 Steam이 실행되지 않음

  6. 6

    성공 메시지 후 Ajax 팝업이 닫히지 않음

  7. 7

    선택 변경시 Ajax 호출이 실행되지 않음

  8. 8

    배포 업데이트 실패 후 Ubuntu가 시작되지 않음

  9. 9

    20.04에 업데이트 한 후 Chromium이 시작되지 않음

  10. 10

    Ajax 양식이 게시되지 않음

  11. 11

    Microsoft Azure 시작 작업이 실행되지 않음

  12. 12

    npm 시작 후 Github 작업이 작동하지 않음

  13. 13

    13.10 업그레이드 후 시작되지 않음

  14. 14

    업데이트 후 Apache가 시작되지 않음

  15. 15

    13.10 업그레이드 후 시작되지 않음

  16. 16

    WebStorm 8 EAP가 업데이트 후 시작되지 않음

  17. 17

    업그레이드 후 Ubuntu 14.04가 시작되지 않음

  18. 18

    OSX Yosemite 업그레이드 후 Apache가 시작되지 않음

  19. 19

    15.10 업그레이드 후 Ubuntu가 시작되지 않음

  20. 20

    AJAX 성공이 실행되지 않음

  21. 21

    MVC 작업에 AJAX 게시를 수행 할 때 JSON이 객체로 역 직렬화되지 않음

  22. 22

    iOS 7에서 처음 실행 한 후 LeftBarButtonItem이 표시되지 않음

  23. 23

    $ .when ()이 실행되지 않은 후 .done (function ())의 jquery ajax 코드

  24. 24

    페이지 매김 클릭 후 PHP / Ajax / jquery 작업이 작동하지 않음

  25. 25

    업데이트 시스템 전체 업데이트 후 Gem 설치가 실행되지 않음 Arch Linux

  26. 26

    X 패키지 업그레이드 후 실행되지 않음

  27. 27

    시간대 변경 후 크론 작업이 시작되지 않음

  28. 28

    컴파일 시도 후 AngularJS ng-click이 실행되지 않음

  29. 29

    업데이트 후 Zeus + Poseidon이 실행되지 않음

뜨겁다태그

보관