问题补充:
我把alert(str);放到xmlHttp.send(null);之前
光提示,没有数据显示。
我把alert(str);放到var responseText=xmlHttp.responseText;
之后连提示都没有了。
我把alert(str);放到xmlHttp.send(null);之前
光提示,没有数据显示。
我把alert(str);放到var responseText=xmlHttp.responseText;
之后连提示都没有了。
xmlHttp.onreadystatechange = function(){
if(xmlHttp.readyState == 4 && xmlHttp.status = 200)
{
var responseText=xmlHttp.responseText;
document.getElementById("cllx").value = xmlHttp.responseText;
}
}是正确的方式,你直接读返回值,那时服务器还没返回呢,ajax是异步的,不是同步,你那么写当然不会有什么结果alert()不过是延误了一下时间,所以才会有效果。但是网速慢的情况下,也不一定就能行。
alert及下面的都去掉再试试看:
<script language="JavaScript">var req = false;if(window.XMLHttpRequest){
req=new XMLHttpRequest();
if(req.overrideMimeType){
req.overrideMimeType("text/xml");
}
}
else if(window.ActiveXObject){
try{
req=new ActiveXObject("Msxml2.XMLHttp");
}catch(e){
try{
req=new ActiveXobject("Microsoft.XMLHttp");
}catch(e){}
}
}function send_request(url){
if(!req){
alert("创建XMLHttp对象失败!");
return false;
}
req.open("GET",url,true);
req.onreadystatechange=processrequest;
req.send(null);
}
//处理返回信息的函数
function processrequest(){
if(req.readyState==4){ //判断对象状态
if(req.status==200){ //信息已成功返回,开始处理信息
//alert(req.responseText);
document.getElementById("subType").innerHTML=req.responseText;
}
else{
alert("您所请求的页面不正常!");
}
}
}
没错!玩ajax一定要理解异步!!
你的js运行完了,但是异步处理的程序还没完呢。
还有个小问题,很多例子都是document.getElementById("cllx").innerHTML赋值,
我使用document.getElementById("cllx").value才赋值成功。
是不是后台代码的关系?
后台页面我是这样写的response.getWriter().write(lRs.getString("cllx"));
如果我用innerHTML赋值,应该怎么写?
使用AJAX返回的结果,要在回调函数中使用。
使用AJAX返回的结果,要在回调函数中使用。