2012-01-11 3 views
0

dojo.xhrで画像を受け取るには?イメージをxhr経由で返信するにはどうすればよいですか?

私はdatagridを持っていて、どの行でもクリックすると、 サーバから画像を取得したい(選択した行に依存します)。イメージはダイアログとしてポップされます。

handleAsパラメータappropriteは表示されません。

は現在、私は2つのオプション、

1)ダイアログ内の<image>の定義を持って、onClickイベントは、(これは、非同期に見えない)にもリンクを返すサーバイメージにsrcパラメータを設定すると、ダイアログが表示されます。

2)Base64を使用して画像をエンコードし、。JSONとして渡す(そして、何?どのブラウザで画像に戻って、それを変換するには?)

私は、上記のいずれかに満足していないです。

お勧めします。ありがとう。

EDIT

2)続き。 <image>タグの属性src="data:image/jpeg; base64, *deferredObj*"を設定してこの作業を行う方法を見つけましたが、それでも私にはこれを実行する明白な方法ではありません。

答えて

0

あなたの考えと時間を共有してくれてありがとう。私は、XHRがバイナリデータ(画像のようなもの)用に設計されていないことに気付いた。 私はそれに応じて自分のアプリケーションのデザインを変更した。

0

imageのbase64エンコーディングは使用しないでください。 IEはdata:imageのサポートが貧弱です。

画像URLは正しい方法です。解決策1)が良いです。パフォーマンスが悪い場合は、image preloadingを使用して改善してください。

+0

この欠陥を「IE」と「データ:画像」で指摘してくれてありがとう。私はFFだけに集中しています。しかし、両方のアプローチは私には明らかではありません。私は、それを行うためのよりきれいな方法があると感じています。たとえば、MIMEタイプ 'Content-Type = image/jpg 'の設定などがあります。 'Http' - ' Mimetypes'はこの目的のために15年の間存在します。私は 'xhr'を介して画像を送信することはかなり簡単な作業であることを意味し、' dojo'(標準または少なくとも単純な方法で)で行うことはできません。 – 0xc0de

0

グリッド構造を構築するときは、formatter: myFunction属性を含めます。次に、myFunctionを使用してdojo.xhrGetを呼び出してイメージを取得します。だから、このようなもの:

grid = new dojox.grid.dataGrid({ 
     id: 'grid', 
     structure: gridStructure 
}); 
gridStructure = [ 
    {field: 'id', name: 'ID', formatter: myFunction} 
]; 
myFunction = function(){ 
    dojo.xhrGet(
     //retrieve image here 
    ); 
} 
関連する問題