0

ajaxリクエスト後にファイルをダウンロードする必要があります。そこで、webmethodとgetのファイルにデータを投稿するページにiframeを追加します。ボタンクリックハンドラーにあるjavascriptコードは次のとおりです。

var iframe = $("<iframe id='PDFIframe' style='display:none'></iframe>");
var iForm = $("<form id='PDFForm' action='App/Billing.asmx/GetPDF' target='PDFIframe' method='post' target='_parent'></form>")
            .html('<input type="hidden" name="HtmlContent64" value="' + htmlContent64 + '"/><input type="hidden" name="billNum" value="' + this.billId + '"/>');

iframe.append(iForm);
tempCmp.append(iframe);
iForm.submit();

しかし、私はiframe.append(iForm)IE 7と8の回線で問題があります。IE9では、これは完全に機能します。私のコードの何が問題になっていますか?

編集:私はこの質問をもっと学びます、そして多分この問題は私が写真のように値を変えてIE9で異なるIEバージョンをテストする原因になります。モード変更はこの問題を引き起こす可能性がありますか?たぶんそれは実際の7と8のIEブラウザで問題なく動作します。あなたはどのように思いますか? ここに画像の説明を入力してください

4

1 に答える 1

1

多くの時間を費やした後、私は私の質問の解決策を見つけられませんでしたが、iframeなしでIE7、IE8、IE9のファイルをダウンロードしたり、新しいページを開いたりするのに役立つ回避策を見つけました。コードは次のとおりです。

jQuery.download = function(url, data, method){
//url and data options required
if( url && data ){ 
    //data can be string of parameters or array/object
    data = typeof data == 'string' ? data : jQuery.param(data);
    //split params into form inputs
    var inputs = '';
    jQuery.each(data.split('&'), function(){ 
        var pair = this.split('=');
        inputs+='<input type="hidden" name="'+ pair[0] +'" value="'+ pair[1] +'" />'; 
    });
    //send request
    jQuery('<form action="'+ url +'" method="'+ (method||'post') +'">'+inputs+'</form>')
    .appendTo('body').submit().remove();
};
};
$.download('/export.php','filename=mySpreadsheet&format=xls&content=' + spreadsheetData );

たぶんこれは便利で誰かの時間を節約するでしょう;)そしてここにAjaxのようなファイルのダウンロードを要求するためのjQueryプラグインの完全な詳細があります

于 2013-03-22T09:22:34.763 に答える