如何通过xhr接收图像作为响应?

时间:2012-01-11 10:05:48

标签: image dojo xmlhttprequest

如何通过dojo.xhr收到图片?

我有一个datagrid,点击任意一行, 我想从服务器获取一个图像(取决于所选的行)。图像将作为对话框弹出。

我没有看到任何handleAs参数适用于此。

目前我有两个选择,

1)在对话框中定义<image>onClick事件显示对话框,并将src参数设置为服务器图像返回链接(这看起来不异步)

2)使用Base64对图像进行编码,传递为json。(以及如何在浏览器中将其转换回图像?)

我对以上任何一项都不满意。

请建议。感谢。

修改

2)Contd。找到了通过设置src="data:image/jpeg; base64, *deferredObj*"标记的<image>属性来实现此功能的方法,但对我而言,这并不是一种明显的方法。

3 个答案:

答案 0 :(得分:0)

您不应该使用image64的base64编码。 IE对data:image的支持很差。

图片网址是正确的方法。解决方案1)更好。如果性能不佳,请使用image preloading进行改进。

答案 1 :(得分:0)

在构建网格结构时,请包含formatter: myFunction属性。然后使用myFunction调用dojo.xhrGet来获取图像。所以,像这样:

grid = new dojox.grid.dataGrid({
        id: 'grid',
        structure: gridStructure
});
gridStructure = [
    {field: 'id', name: 'ID', formatter: myFunction}
];
myFunction = function(){
    dojo.xhrGet(
        //retrieve image here   
    );
}

答案 2 :(得分:0)

感谢您分享您的想法和时间。我已经意识到XHR不是为二进制数据设计的(如图像) 我相应地更改了我的应用程序的设计。