2016-10-12 3 views
0

は私のhttpからの画像(image/jpegまたはimage/png)を要求する画像を符号化するサーバbase64でなく画像を表示:jQueryのAJAXを介して画像を受信し、jQueryのAJAX要求を経由して切断

$.ajax({ 
    'url': '/my/cool/api/server', 
    'contentType': 'application/json', 
    'data': '{"some":1,"cool":2,"request":3,"data":4}', 
    'type': 'POST' 
}).done(function(data) { 
    // what to do here? 
}); 

サーバが復帰しません正しい画像。 src=data:image/png;base64,...構文を使用して、返された画像をimgタグに表示したいとします。私はbase64でイメージをラップするサーバーを望んでいないので、私はJavascriptを介してWebブラウザでそれを行う必要があります。これはどうすればいいですか?コールバックの変数dataは何らかの形で混乱しているようです。 jQueryに生のイメージバイトを返すようにすることはできますか?または、jQueryがbase64でデータをエンコードするようにしますか?

私はすでにバニラJS版を手に入れています。したがって、原理的にはニットが可能です。あなたは、多かれ少なかれ、そこにいる、あなたはすでに何をやったかやってみたい場合は

var xhr = new XMLHttpRequest(); 
xhr.open('GET', '/my/cool/api/server', true); 
xhr.responseType = 'arraybuffer'; 
xhr.onload = function(e) { 
    var arr = new Uint8Array(this.response); 
    var raw = String.fromCharCode.apply(null, arr); 
    var b64 = window.btoa(raw); 
    var imgElem = document.getElementById('TODOImg'); 
    imgElem.src = 'data:image/jpeg;base64,' + b64; 
}; 
xhr.send(); 
+0

サーバがイメージに_URL_を返すようにする方法と、それを 'img'タグの' src'プロパティとして設定する方法について教えてください。ブラウザは自動的に新しい画像を要求して表示します。 – ADyson

+0

この画像のURLはありません。この質問は、サーバーの変更に関するものではありません。それはクライアントの変更についてです。 – HASSeering

+0

OKかなり良いです。私はそれがはるかに簡単なので、それが可能だった場合に示唆する価値があると思った。 – ADyson

答えて

0

が、jQueryのを使用して:私はこの作業バニラJSコードの作業jQueryのバリアントを探しています。

jQueryの "done"関数では、ネイティブXHR要求の "onload"関数で行う処理を正確に行います。

しかし、jQueryのajaxは実際にバイナリデータをサポートしていないので、バイナリトランスポートをプラグインする必要があります。http://www.henryalgus.com/reading-binary-files-using-jquery-ajaxを参照してください。

関連する問題