1

以下は、応答として散布図を生成する matplotlib コードです。

def plot(request):
    r = mlab.csv2rec('data.csv')
    fig = Figure(figsize=(6,6))          
    canvas = FigureCanvas(fig)
    ax = fig.add_subplot(111)
    ax.grid(True,linestyle='-',color='gray')
    ax.scatter(r.x,r.y);       
    response=django.http.HttpResponse(content_type='image/png')
    canvas.print_png(response)
    return response

jquery ajax を使用して、テンプレート内の div タグを更新したいと考えています。以下は、フォームのサムビット ボタンをリッスンし、成功時に div を更新する jquery コードです。

<script type="text/javascript" charset="utf-8">
    $(function() { 
        $('#plot').submit(function() {
          jQuery.ajax({            
            url: this.action,
            timeout: 2000,
            aysnc: true,
            error: function() {
              console.log("Failed to submit");
            },
            success: function(r) { 
              $('#plotarea').html(r);
              }
          }) 
            return false;
          })
     })
</script>

しかし、送信ボタンをクリックすると、画像ではなく div にジャンク文字が表示されます。

応答から画像を表示する方法を教えてくれる人はいますか?

前もって感謝します。

4

1 に答える 1

0

生の画像データ(ヘッダー付き)を出力し、それをdivplot()のコンテンツエリア()に直接割り当てるため、失敗しています。.html()URL が画像データを直接返す場合は、代わりにタグのsrc属性として使用する必要があります。<img>

ワークフローを再設計したくない場合は、文字列の base64 エンコードを試して、次の方法を使用できます: http://www.websiteoptimization.com/speed/tweak/inline-images/

つまり$('#image').attr('src', 'data:image/png;base64,' + r);、サクセス コールのようなものです。

于 2010-02-06T08:15:02.087 に答える