本当にAJAXを使用する必要がある場合...
onload ハンドラーが適切な選択ではないユースケースに出くわしました。私の場合、JavaScript経由で印刷するとき。したがって、これに AJAX スタイルを使用するには、実際には 2 つのオプションがあります。
解決策 1
Base64 イメージ データと REST イメージ サービスを使用します。独自の Web サービスがある場合は、Base64 エンコーディングで画像を提供する JSP/PHP REST スクリプトを追加できます。今、それはどのように役立ちますか?画像エンコーディング用のクールな新しい構文を見つけました。
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhE..."/>
したがって、Ajax を使用して画像の Base64 データをロードし、完了時に Base64 データ文字列を画像に構築できます。とても楽しい :)。画像のエンコードには、このサイトhttp://www.freeformatter.com/base64-encoder.htmlを使用することをお勧めします。
$.ajax({
url : 'BASE64_IMAGE_REST_URL',
processData : false,
}).always(function(b64data){
$("#IMAGE_ID").attr("src", "data:image/png;base64,"+b64data);
});
解決策 2:
ブラウザをだましてそのキャッシュを使用させます。これにより、リソースがブラウザーのキャッシュにある場合に、素晴らしい fadeIn() が得られます。
var url = 'IMAGE_URL';
$.ajax({
url : url,
cache: true,
processData : false,
}).always(function(){
$("#IMAGE_ID").attr("src", url).fadeIn();
});
ただし、どちらの方法にも欠点があります。最初の方法は最新のブラウザーでしか機能しません。2 番目のものにはパフォーマンスの不具合があり、キャッシュがどのように使用されるかという仮定に依存しています。
乾杯、意志