6

私はリンクを持っていて、ユーザーがそれをクリックすると、彼はPDFを受け取ります。jQueryでは、PDFを取得するためにサーバーへのPOSTajax呼び出しを作成します。応答はPDFであり、通常はブラウザがReaderプラグインを開くか、ユーザーがPDFを保存できるようにする正しいコンテンツヘッダーなどが含まれています。しかし、私の場合、これは機能していません。データコンテンツタイプを設定したり、コンテンツタイプをPDFに設定したりする方法はありますか?

私のajax呼び出し:

$('#sf_getpdf').click(function() {

 $.ajax({    //create an ajax request to load_page.php

        type: "POST",

        url: "index.php?route=sale/order/superfaktura_getpdf&token=<?php echo $token; ?>",

        data: 'invoice_id=<?php echo $invoice_id; ?>&sf_token=<?php echo $sf_token ?>',  //with the page number as a parameter

        dataType: "text",   //expect html to be returned


        success: function(msg){



            if(parseInt(msg)!=0)    //if no errors

            {

            document.write(msg)
            }

        }

    });

});

Firebug、応答: Firebug

ブラウザでの応答...

ブラウザでの応答

私はすでにサーバーでコンテンツタイプを設定しようとしましたが、成功しませんでした:

サーバーのコンテンツタイプ

編集:これを行うために、Ajaxは必要ありません。

<a id="adr_stitok" target="_blank" href="index.php?route=sale/order/superfaktura_getpdf&token=<?php echo $token; ?>&invoice_id=<?php echo $invoice_id; ?>&sf_token=<?php echo $sf_token ?>" >Download</a></td>

物事を行います。

4

2 に答える 2

5

サーバー側がダウンロード可能なコンテンツを返し、次のようにファイルに送信するようにしてください。

            //$.download('path', 'data' [, 'post'])
            $.download = function(url, data, method) {
                //url and data options required
                if(url && data) {
                    var form = $('<form />', { action: url, method: (method || 'get') });
                    $.each(data, function(key, value) {
                        var input = $('<input />', {
                            type: 'hidden',
                            name: key,
                            value: value
                        }).appendTo(form);
                    });
                return form.appendTo('body').submit().remove();
                }
            throw new Error('$.download(url, data) - url or data invalid');
            };

$.download("index.php?route=sale/order/superfaktura_getpdf&token=<?php echo $token; ?>", {}, 'post')
于 2012-05-17T03:48:21.133 に答える
0

AJAX呼び出しはPDFをフェッチしてブラウザ内にロードしないため、機能しません。それがXMLHttpRequestと呼ばれる理由です。テキストだけを交換します!

于 2012-05-16T21:41:07.523 に答える