首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Ajax >

请高手来解决!

2012-02-15 
请高手来解决! - Web 开发 / Ajax我在后台得到的是图片二进制文件,在前台为啥我得不到图片输出,下面那段有

请高手来解决! - 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(){/*图片加载完成后的代码*/} 

热点排行