2

jQuery ajaxリクエストを送信し、data:xmlContent-Type:text/xmlのレスポンスを取得しています:

--MIME_boundary
Content-Type: text/xml; charset=utf-8
Content-Transfer-Encoding: binary
Content-ID: <SOAP-ENV:Envelope>

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope> .............</SOAP-ENV:Envelope>
--MIME_boundary
Content-Type: application/pdf
Content-Transfer-Encoding: binary

.... pdf binary data .....

私が理解しているように、応答は添付ファイル付きのマルチパートです...しかし、soap部分とpdf生データ部分を個別に抽出し、バイナリデータを使用してこのpdfを構築するにはどうすればよいですか? 助けてくれてありがとう。

これも視野に入れておく:http://www.w3.org/TR/SOAP-attachments#SOAPReferenceToAttachements

更新:少し調査した後、さまざまな回答をまとめたところ、次の問題と疑問が生じました。

  • Ajax - jquery .ajax() 関数 - テキスト/xml 応答のみを処理するため、バイナリ データを処理しません (どこかで読み取ってください)。しかし、マルチパートを取得している場合 -> Content-Type: application/pdf -> バイナリ データを取得しています。
  • バイナリ データを base64 に変換してから html5 データを使用することもできます。

さて、私の結論は次のようになります。

  • ajax リクエストを作成し、URL パスを取得して、window.location.href を使用してサーバーからファイルを直接ダウンロードするだけです。

ここで間違っている場合は修正してください: jQuery Ajax はマルチパート MIME 応答を処理できませんか??

4

1 に答える 1

0

AJAX は UTF-8 エンコーディングを使用するため、バイナリ データ転送をサポートできません。バイナリ データを Base64 でエンコードしてから、反対側でデコードする必要があります。それに応じてヘッダーを設定する必要があります。

Content-Transfer-Encoding: base64
Content-Description: somefile.pdf
Content-Disposition: attachment;
filename="somefile.pdf"

....then your Base-64 data blob ...
于 2012-09-05T19:27:22.877 に答える