日期:2014-05-16  浏览次数:20803 次

请高手来解决! - Web 开发 / Ajax

我在后台得到的是图片二进制文件,在前台为啥我得不到图片输出,下面那段有错呢?
getimage.js:

<script language="javascript" type="text/javascript"> 
var xmlHttp = false; 
try { 
xmlHttp = new XMLHttpRequest(); 
} catch (trymicrosoft) { 
try { 
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); 
} catch (othermicrosoft) { 
try { 
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); 
} catch (failed) { 
xmlHttp = false; 



if (!xmlHttp) 
alert("Error initializing XMLHttpRequest!"); 

function LoadImage()
{
 var url="getimage.asp?ID="+ID+"&stamptime="+new Date().getTime(); //这里用new Date().getTime()可以使刷新图片
 var xmlHttp = GetxmlHttp();

 xmlHttp.onreadystatechange=function event()
 {
  if(xmlHttp.readystate==4)
  {
  if(xmlHttp.status==200)
  {
  document.getElementById.src=url;
  }
  }
 }
 xmlHttp.open("get",url);
 xmlHttp.send(null);
}

getimage.asp:
<%
dim sql,rs,conn
response.expires=-1
sql= "select top 6 * from [ladladypic] order by id desc" 

set conn=Server.CreateObject("ADODB.Connection")
conn.open "PROVIDER=microsoft.jet.oledb.4.0;DATA source="& server.MapPath("asp/ladladypic.mdb")
set rs = Server.CreateObject("ADODB.recordset")
rs.Open sql, conn,1,3
do while not rs.eof 
response.contenttype="image/*"
response.clear
response.binarywrite rs("imagedata").getchunk(8000000)
response.flush
rs.movenext 
loop
response.end
rs.close
set rs=nothing
conn.close
set conn=nothing
%>

HTML:

<div id="picContainer">
 <img style="position:absolute; float:left; left: 143px; top: 223px;" src="url" width="200" height="200" border="0" >
 </div>



------解决方案--------------------
1,函数起名不要用event这个名字。
2,就你这个应用来说,没有必要用AJAX呀。
------解决方案--------------------
ajax请求返回的数据不支持image类型的,也不是不支持,返回的都是2进制代码,在浏览器安全范围内你没办法用js生成图片

如果直接加载图片,可以使用Image对象预加载就行了
eg
JScript code
var img=new Image();
img.src=="getimage.asp?ID="+ID+"&stamptime="+new Date().getTime(); //这里用new Date().getTime()可以使刷新图片
img.onload=function(){/*图片加载完成后的代码*/}