JQuery 的 $.get 能否逐步显示内容?

2014-11-05 14:29:06 +08:00
 andybest
例如代码:
$.get("test.jsp",function(data){
$("#output").append(data);
});

是获取 test.jsp 的内容,并 append 到 #output,

现在的问题是 test.jsp 中显示的内容是逐步输出的:

out.print("1");out.flush();
Thread.sleep(1000);
out.print("2");out.flush();
Thread.sleep(1000);
out.print("3");out.flush();
Thread.sleep(1000);
out.print("ok");out.flush();

每打印一个数字,sleep(1000),直接在浏览器打开 test.jsp 也可以看到这种效果
但 $.get("test.jsp"... 无法将这种效果消失出来,总是等到该页面完全处理完成后一次显示出所有内容

将其逐步显示的效果在 #output 中展现出来?
2328 次点击
所在节点    问与答
8 条回复
oott123
2014-11-05 14:32:06 +08:00
$.get("test.jsp?step=1",function(data){
----$("#output").append(data);
----setTimeout(function(){
--------$.get("test.jsp?step=2",function(data){
------------$("#output").append(data);
--------});
----});
});
oott123
2014-11-05 14:32:25 +08:00
setTimeout 漏了个参数orz
byc8888
2014-11-05 14:34:30 +08:00
建议把数据一次提交 减少对服务器的请求次数
然后用$.each遍历出来可以达到效果
byc8888
2014-11-05 14:39:08 +08:00
$.post("test.jsp",{a:1,b:2},function(d){
--- $.each(d,function(i,v){
------- setTimeout('$("#output").append('+ v.data+')',100)
---})
},'json');
服务端输出JSON数据JQ遍历出来!!
andybest
2014-11-05 14:52:16 +08:00
@oott123 @byc8888
test.jsp 中输出1,2,3只是举个例子,实际上是无法修改 test.jsp 中的代码的
byc8888
2014-11-05 15:03:34 +08:00
var strs= new Array();
$.post("1.php",{a:1,b:2},function(d){
var d="2,2,3,5,6,6";//这里的d就是function的数据 实际使用中把这行去掉 我放这里只是你调试看效果 希望能帮到您
var i=0;
strs=d.split(",");

$.each(strs,function(v){
i++
setTimeout('$("#output").append('+ v+')',i*1000)
})

});
SoloCompany
2014-11-06 01:16:07 +08:00
jquery.ajax 封装似乎没有针对这个进行优化

最直接的方法还是直接面向 XMLHttpRequest 编程吧
通过 onreadystatechange 事件,在 readyState 转变为 LOADING 的时候 setup 一个 timer/interval 去定期获取 responseText 的内容(holds partial data)并执行你自己的逻辑

最后在 readyState 转变为 DONE 的时候 clear interval
andybest
2014-11-06 04:55:51 +08:00
@SoloCompany 灵!!!

有没针对这个需求的 JQuery 方法封装呢?类似 readSteam getSteam 之类。。。
真的要自己写一个吗(伸手党又来了)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/144105

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX