3

請求書を返すWCFWebApiエンドポイントがあります:http:// localhost / api / invoice / 23

返される形式は、リクエストのacceptsヘッダーの形式です。JavascriptがJSONまたはXMLを必要とする場合は、これをacceptヘッダーに設定するだけです。これは、WCFWebApiが機能しているように見える方法です。請求書にPDFフォーマッターを追加したので、application / pdfを要求すると、適切なMIMEタイプでレンダリングされたpdfファイルストリームが返されます。これは正常に機能し、フィドラーでテストできます。

ユーザーがブラウザで何かをクリックしてPDFのダウンロードを開始し、[開く/保存]ダイアログをポップアップする必要があります。これを行う方法と、リクエストのacceptヘッダーを設定する方法がわかりません。ヘッダーを設定できないため、JavaScriptの静的リンクまたはwindow.locationは機能しません。AJAXリクエストは機能しません。これは、ヘッダーを設定できますが、テキストが返されることを期待しており、ブラウザーにダウンロードとして表示されないためです。

どうすればこれができるのかわかりません。任意の提案をいただければ幸いです。

4

2 に答える 2

3

JavaScript でフォームを動的に作成し、新しいタブで開始するように要求するだけです。それはあなたが望むものを与えるはずです。

function SubmitRequest() 
{
        var myForm = document.createElement("form");
        myForm.method = "post";
        myForm.action = "url here"
        var myInput = document.createElement("input");
        myInput.setAttribute("name", "json");
        myForm.setAttribute("target", "_blank");
        myInput.setAttribute("value", "Your value here");
        myForm.appendChild(myInput);
        document.body.appendChild(myForm);
        myForm.submit();
        document.body.removeChild(myForm);
    }
于 2011-09-08T11:35:49.143 に答える
2

最も簡単な方法は、へのリンクを含む A タグをページに追加しhttp://localhost/api/invoice/23.pdf、フォーマッタで AddUriPathExtensionMapping を使用して、URI のパス拡張子から Accept ヘッダーを自動的に生成することです。

于 2011-09-08T11:46:10.343 に答える