javascript - 如何在 Django 中用图像更新 div?

标签 javascript jquery image django-templates django-views

以下是生成散点图作为响应的 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 标签。以下是监听表单 sumbit 按钮并在成功时更新 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 上显示的是垃圾字符,而不是图像。

有人可以指导我如何显示响应中的图像吗?

提前致谢。

最佳答案

失败是因为 plot()输出原始图像数据(带标题),并将其直接分配给 div 的内容区域 ( .html() )。当url直接返回图像数据时,应将其用作 src <img> 的属性标签代替。

如果您不想重新设计工作流程,您可以尝试对字符串进行 Base64 编码并使用此方法:http://www.websiteoptimization.com/speed/tweak/inline-images/

即类似 $('#image').attr('src', 'data:image/png;base64,' + r);在您的成功通话中。

关于javascript - 如何在 Django 中用图像更新 div?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2212486/

相关文章:

javascript - 如何获取 dom 创建的单选按钮的实际标签值/文本?

javascript - Chartjs实时图形x轴移动

javascript - 将 "Xh Xm"字符串转换为整数

javascript - 绘制多个数据表时速度很慢

python - 使用 Parser 替换所有 IMG 元素的 SRC

javascript - 动态生成图像的 src 未定义

c# - 从 silverlight 应用程序生成当前项目的文件名列表?

JavaScript 比较、匹配和分配嵌套数组中的对象

javascript - 通过单击外部叠加层关闭叠加层,在叠加层处于事件状态时突出显示叠加层按钮

php - 在论坛菜单/导航上启用事件/当前状态