2012-02-01 9 views
1

私のプロジェクトでは、ajax()jquery関数によってキャッシュされた画像を非同期呼び出しで動的に表示したいと思います。ajax()jquery関数の非同期呼び出しでキャッシュから画像を表示

$.ajax({ 
    type: “POST”, 
    url: “mypage.aspx/GetThumbnail”, 
    data: “{‘id’:'" + idThumbnail + "’}”, 
    contentType: “application/json; charset=utf-8?, 
    dataType: “json”, 
    success: function(msg) { 
     // Hide the fake progress indicator graphic. 
     $('#thumbnailContent').removeClass('loading'); 

     // Insert the returned HTML into the <div>. 
     $('#thumbnailContent').html(msg.d); 
    } 
}); 

私のWebMethod属性の復帰は、このようなHTMLとして表示されますので、成功の場合は非同期静的なWebメソッド「mypage.aspx」ページの「GetThumbnail」を、呼び出します。このjQueryのブロックコード:

<img url="myThumbnailImage.jpg" /> 

私の問題は、文字列にフォーマットされたHTMLを返す必要があり、静的なWebメソッドから来るが、私は、キャッシュからデータを読み込むとき、私は[]このようなバイト回復:retuを行うことができますどのように

if (HttpContext.Current.Cache[id_thumbnail+ "_thumbnail"] != null) 
    { 
    byte[] mytemptabbyte = (byte[])HttpContext.Current.Cache[id_thumbnail + "_thumbnail"]; 
    HttpContext.Current.Response.Clear(); 
    HttpContext.Current.Response.AddHeader("Content-Type", "image/jpeg"); 
    HttpContext.Current.Response.Write(""); 
    HttpContext.Current.Response.BinaryWrite(mytemptabbyte); 
    HttpContext.Current.Response.Flush(); 
    HttpContext.Current.Response.End(); 
    } 

を私のキャッシュされたイメージでのHTML形式の応答?

EDIT:

だから、私はこのように行うことができる新しいaspxページを呼び出しますか?

function LoadThumnail(id_thumbnail){ 
    $.ajax({ 
    type: “POST”, 
    url: “getThumbnail.aspx?id_thumbnail=”id_thumbnail, 
    data: “{}”, 
    contentType: “application/json; charset=utf-8?, 
    dataType: “json”, 
    success: function(msg) { 

     // Insert the returned HTML into the <div>. 
     $('#thumbnailContent').html('<img src="' + msg.d + '" />); 

     // Hide the fake progress indicator graphic. 
     $('#thumbnailContent').removeClass('loading'); 
    } 
}); 

}

答えて

0

ページを作成します(例えばgetimage.aspx)、そしてあなたはのOnInit/Page_Initそのページのに対して、 "キャッシュから画像を取得" と呼ばれるコードを配置します。

<img url="getimage.aspx?id=myThumbnailImage.jpg" /> 

または

<img url="getimage.aspx?id=1234" /> 

その後、また、Request.QueryString["id"]を読んで、キャッシュから画像をretriveするためにそれを使用します。

は次に、IMGタグはこのようなものもあります。

+0

このようにすることで、これは非同期呼び出しではなく、要求に応じてサムネールをロードしたいのですが... – bor1s

+0

@ bor1sは、ajaxで上記のページを非同期的に呼び出します。 ajaxリクエストは常に文字列表現を取得します。 – Igarioshka

+0

リンゴと梨、紳士。彼は彼のアヤックスコールがそのimgタグhtmlのために行くと言いました。私はそのマークアップを変更することを提案しています。そうすれば、それらの画像が存在しないので、メモリに座っている画像データを利用することができます。代わりに、イメージデータをディスクに保存してから、クリーンアップを心配したり、心配したりしないでください。 –

関連する問題