2011-06-03 72 views
0

我看了很多帖子,但似乎没有任何帮助。我有一个ajax客户端,它从Jetty服务器上运行的远程Web服务中检索图像。如果我使用浏览器(Firefox等),则成功显示检索结果。如果我使用ajax脚本,图像显示为一堆不可读的字符。图像是否需要以某种方式从ajax案例中的服务器发送出去?我已经尝试了许多不同的方法,包括数据URI,但似乎没有任何工作。有任何想法吗?我将不胜感激。 Thakns。DIsplaying由Ajax检索图像

回答

1

实际上得到的图像asyncronously是用JavaScript做它的字面方式:

var img = new Image(); 
img.src = "http://your img uri"; 
document.getElementById("image_container").appendChild(img); 

无需XHR类型AJAX来得到它。

如果你需要一个成功回调,可以在img.src定义之前添加:

img.onload = function() { /* ... */ } 
0

Ajax中的X代表XML。所以结果基本上是文字。 你可以改变这个,但取决于使用的框架。像jQuery

也许你正在尝试做一些不需要AJAX的东西。 或者您的AJAX只检索该图片的网址。

如果您已经在实例化一个VAR像IMG DOM对象:

var img = document.getElementById('my_img'); 

并且已经有图片的路径(即: '/img/img.jpg')

尝试

img.src='/img/img.jpg'; 
+0

好的意见,谢谢。但是,我确实需要Ajax,因为服务器端没有写任何东西(我正在处理移动设备),而数据(图像)在被捕捉后驻留在内存中。我使用p2p技术来路由请求,因为移动设备在NAT后面=因此,即使我将这些图像保存在服务器上,它们也不会被URL寻址。我看到一些声明声称要么将我收到的字节数组转换为base64编码将工作: – kypriakos 2011-06-03 20:56:05

+0

对不起,我完成之前的消息被切断 - 这里是我在网上发现的声明,声称使用responseText: – kypriakos 2011-06-03 20:56:49

+0

好吧stackoverflow中的[ENTER]不会给你一个新行 - 再次尝试:var responseImage = document.createElement(“responseImage”); responseImage.src =“data:image/jpg; base64,”+ xhr.responseText; newhtml2 =“>”;我认为上面提到的那个Ajax是异步的XML的确是这里的aha。与可以返回附件的RPC/SOAP调用不同,Ajax不是为XML通信以外的任何内容构建的。并保存在客户端上的文件是一个从Ajax(安全问题)不是(安全问题) – kypriakos 2011-06-03 21:07:42