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

ajax显示100条数据校验结果不能异步显示;
下面是调用代码,循环100次调用ajax函数;
Java code

function asdf(){
var i;
i=1;
 for(i=1;i<=100;i++){
  show("jq1.asp?text="+i); }
}



===========
ajax函数:
JScript code
function createAjax(){
var http;
if (window.ActiveXObject){
    http=new ActiveXObject("Microsoft.XMLHTTP") ? new ActiveXObject("Microsoft.XMLHTTP") : new ActiveXObject("Msxml2.XMLHTTP");
}
else if(window.XMLHttpRequest)
{
    http=new XMLHttpRequest();
}


return http;
}
var ajax=createAjax();

function show(vv){//ajax乱码是因为在传递中文的时候没有进行编码,escape()是进行编码。
 ajax.open("GET",vv+"&num="+Math.random(),true);
ajax.send(null);
ajax.onreadystatechange=getmessage;
}
 function getmessage(){
var html;
if (ajax.readyState==4){
        if (ajax.status==200){
     html=ajax.responseText;
       document.getElementById("yz").innerHTML=document.getElementById("yz").innerHTML+"<Br>"+html;
          
        }else    alert('status is:'+ajax.status);

}else{
 //document.getElementById("yz").innerHTML=document.getElementById("yz").innerHTML+"<BR>"+ajax.readyState;
}
//alert(html);
}



===============================================
我想要的结果是 在页面中一条一条的输出返回值,而现在的效果是 只输出最后一次的返回值;
网上查了说是循环太快,没来得及接收返回值就跳到下一条了;不知道jq有没有类似的效果;

这功能貌似不太难,因为网站中经常看到有逐条输出信息的,只是我不太懂这个;谢谢!



------解决方案--------------------
使用setInterval间隔时间调用
------解决方案--------------------
以前逐条用ajax读取数据显示,直接用循环有问题!我是通过递归调用解决的!你可以思考下!
------解决方案--------------------
应为ajax异步调用,使用递归呢就是为了保证每个ajax的请求都是有先后顺序的,也就是这个请求执行完毕了再去执行下一条请求,说以在递归时是在ajax的回调函数中执行完毕了js的相关操作之后再去执行下一次的ajax调用!
不知道我这样讲你明白不了!