jQueryの$.ajax()
でバイナリをGETすると、parsererror
が返ってくるんだが...?
-
$.ajax()
はバイナリをテキスト扱いしてしまうため - ググってみると、jQueryを諦めて潔く
XMLHttpRequest
を書いて解決してる例が多い。。-
Henry Algusさんのブログを参照して「
$.ajax
で取得する方法はある!」と紹介しつつも、「$.ajaxTransport
で長い記述したくない!」とXMLHttpRequest
で済ませちゃう例が多数。。- そもそも、このブログでは何を言っているの?
-
Henry Algusさんのブログを参照して「
BinaryTransport
- 結論を言うと、これが
$.ajax
でバイナリを取得する方法である。- この関数を読み込ませるだけで、
$.ajax
でバイナリをGETできる!(jQuery$.ajax
の拡張) - Henry AlgusさんがGitHubで公開している https://github.com/henrya/js-jquery/tree/master/BinaryTransport
- この関数を読み込ませるだけで、
使い方
Blobで取得
$.ajax({
url: "image.png",
type: "GET",
dataType: 'binary',
responseType:'blob',
processData: false,
success: function(result){
}
});
ArrayBufferで取得
$.ajax({
url: "image.png",
type: "GET",
dataType: 'binary',
responseType:'arraybuffer',
processData: false,
success: function(result){
}
});
これでコードがスッキリ!