以下是生成散点图作为响应的 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/