2017-05-23 8 views
1

私はAJAXを使用してサーバからExcelファイルをダウンロードしています。しかし、ダウンロードされたデータが実際のデータは、オレンジ色の背景にあるajax成功ハンドラでデータエンコーディングが異なる

enter image description here

実際のデータと異なっています。受信したデータは黄色の背景にあります。

差分ファイルから、異なるエンコード形式を使用しているように見えます。したがって、ファイルが正しい形式でないというエラーが発生します。

$.ajax({ 
     url: exporting.action, 
     headers: { "Authorization": "Basic " + btoa("key : " + key) }, 
     type: "post", 
     responseType: "arraybuffer", 
     success: function (res, status, obj) {     
      var blob = new Blob([str2ab(res)], { type: obj.getResponseHeader('Content-Type') });     
      var objectUrl = URL.createObjectURL(blob); 
      window.open(objectUrl); 
     }, 
     data: { 'Model': JSON.stringify(modelClone) } 
    }); 

「エンコーディング」と、この

答えて

1

トラブルを解決するためにjQueryの応答arraybufferが、文字列をなかったことに起因するを助けてください。文字列はJavaScript UTF-16で、文字列のバイナリデータはトラブルの原因となります。 jQueryの代わりにネイティブAJAXを使用することをお勧めします。コードは似ていて、ブラウザーのサポートはブラウザのBLOBとオブジェクトURLのものと同じです。

var xhr = new XMLHttpRequest(); 
xhr.open("POST", exporting.action); 
xhr.setRequestHeader("Authorization", "Basic " + btoa("key : " + key)); 
xhr.responseType = "arraybuffer"; 
xhr.onreadystatechange = function() { 
    if (xhr.readyState == 4 && xhr.status == 200) { 
     var blob = new Blob([xhr.response], { type: xhr.getResponseHeader('Content-Type') }); 
     var objectUrl = URL.createObjectURL(blob); 
     window.open(objectUrl); 
    } 
}.bind(this); 
xhr.send({ 'Model': JSON.stringify(modelClone)}); 
+0

ありがとう – Kira

関連する問題