在AJAX响应中嵌入图像

时间:2009-03-23 17:36:13

标签: javascript ajax

是否可以(并支持跨浏览器)将图像嵌入到AJAX响应的XML中,然后使用JavaScript加载该图像?

我有一个系统可以根据运行它的会话数进行一些计算。然后将结果绘制成图表,并分两部分返回:

1)包含有关图表,总计和图像地图数据的信息的XML,允许用户点击相关区域。

2)图形图像。

由于数据可以在两个请求之间发生变化(并且计算起来可能很昂贵),我宁愿在单个请求中执行此操作(使用XML返回图像)。当前实现缓存了一小段时间的统计信息,以便多个请求的结果仍然匹配。由于需要缓存的数据量将会增加(从大约2.5K到大约1.2MB),我想尝试另一种方法。

注意:我不想使用内联b64 PNG图像,因为IE不支持它们。

7 个答案:

答案 0 :(得分:3)

您是否可以将图像存储在服务器上并将URL发送给客户端?

答案 1 :(得分:3)

由于这似乎是值得的更多工作,我已经决定更简单的解决方案:

1)将XML数据发送给客户端,并附上要绘制内容的详细信息。

2)客户端发送图像请求,包括图形数据(类似于Google Chart API)。

这将图表呈现与数据分离,然后可以在将来用于生成其他数据集的通用图表。另一个好处是它不需要任何缓存服务器端,因为只使用了1个请求。

答案 2 :(得分:2)

您可能需要查看此link以查看此概念是否有效。这个link可能很有用。

我认为尝试将XML中的两组数据结合起来会很有趣。

答案 3 :(得分:1)

您是否考虑过使用Google's Chart API

答案 4 :(得分:1)

那么actually you can但它可能不值得。看起来像基于矢量的方法(如canvas)和VML alternatives for IE将是渲染图形的更好选择。然后,您只需将图表数据传递给浏览器。

答案 5 :(得分:0)

如果存储不是一个选项。在内存中创建映像并将二进制映像数据刷新为脚本响应,如php文件。只需使用正确的标题:

Content-type: image/png

每次都会重新生成图像。

为了绝对确保图像不会被缓存,请在查询字符串中添加一些随机参数。

答案 6 :(得分:0)

您可以将图像返回到ajax-client,然后将XML数据包含在图像的X-HTTP-Header中。

但是你需要知道是否可以从ajax-client读取X-header。