因为后台查询的内容太多,不能及时返回页面,现在需要把页面请求拆分为一个个请求---for循环,然后使用ajax返回数据到页面刷新,但是为什么进入页面是空白的,必须等所有的请求完成才一次性加载数据到页面,而不是请求完成一个加载一个数据。
var taskArray=new Array("01","02","03","04","05","06","07");
for(var i=0;i<7;i++){
taskParam = taskArray[i];
$.ajax({
url:"<%=basePath%>TestServlet?method=query&taskParam="+taskParam,
type:"post",
data:{},
dataType:"json",
async : false, //默认为true 异步
error:function(jqXHR, textStatus, errorThrown){
alert("查询任务出现异常:"+errorThrown);
},
success:function(data){
var message = data.message;
var spanid = 'span_'+taskParam ;
document.getElementById(spanid).innerText = message ;
}}
body是7个span
怎么让for里面,请求返回一次,刷新一个span,而不是等所有请求完成才一起刷新
肯定要灯七个span都加载完成后才能显示页面了,难道还能先显示页面,然后再一个一个生成span?那就算生成了你页面也显示不出来
var spanid =
var task_div = document.getElementById(spanid);
task_div.style.display = "block";//展示该span
js方法在前面还有个方法先将所有的span隐藏,然后后台逐个返回数据才显示。为什么要等7个span抖加载完才显示呢?
怎样当后台返回一个数据,显示一个span,这样让span一个个显示出来(我有想过js动态拼接html,但是因为需要拼的html比较复杂,有<a>标签,里面带很多各种各样的参数,所以不方便这样拼),所以就先先写完7个span,<span id="span_01"></span>这样一定规则写了7个span,然后当ajax返回后,再用统一的方法拼接span的id就行。
呃,原来其实已经实现了,只是本地数据太少,看不出效果,加了线程睡眠,看到效果了。
async : false, //默认为true 异步
什么意思呢?是设置async : false, ???我这个已经设置了。
1L都已经回答你了 把async : false去掉就可以了 默认是true的
不行,试过了
1 var taskArray=new Array("01","02","03","04","05","06","07"); 2 for(var i=0;i<7;i++){ 3 taskParam = taskArray[i]; 4 $.ajax({ 5 url:"<%=basePath%>TestServlet?method=query&taskParam="+taskParam, 6 type:"post", 7 data:{}, 8 dataType:"json", 9 async : false, //默认为true 异步 10 error:function(jqXHR, textStatus, errorThrown){ 11 alert("查询任务出现异常:"+errorThrown); 12 }, 13 success:function(data){ 14 var message = data.message; 15 var spanid = 'span_'+taskParam ; 16 document.getElementById(spanid).innerText = message ; 17 } 18 }); 19 }
//代码没闭合,还是没有贴出来完。