首页 新闻 会员 周边 捐助

Ajax 局部刷新迭代器的内容

0
悬赏园豆:200 [已解决问题] 解决于 2014-04-26 00:53

最近在做个网站的、有个地方是想这样做的、就是滑动到下面、然后或触发滑动刷新事件、接着就通过ajax发送请求给action,之后从action获得数据后、局部更新内容、但现在的问题是、大部分地方都没问题了、就是我从action获得了更新了的内容之后、如何能把数据更新到迭代器中、是使用struct2的s:iterator这个迭代器。求指点,代码如下:
<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
<script type="text/javascript">
var totalheight = 0; 

function loadData()

    totalheight = parseFloat($(window).height()) + parseFloat($(window).scrollTop()); 

    if ($(document).height() <= totalheight) 

//加载数据
doStart();
    } 


$(window).scroll( function() { 
console.log("滚动条到顶部的垂直高度: "+$(document).scrollTop()); 
console.log("页面的文档高度 :"+$(document).height());
console.log('浏览器的高度:'+$(window).height());
loadData();
}); 

var xmlHttp;
        function createXMLHttpRequest() {
            if (window.ActiveXObject) {
                xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            else if (window.XMLHttpRequest) {
                xmlHttp = new XMLHttpRequest();
            }
        }
        function doStart() {
            createXMLHttpRequest();
            var url = "PersonInfoCenter.action";
            xmlHttp.open("GET", url, true);
            xmlHttp.onreadystatechange = gethello;
            xmlHttp.send();
        }
        function gethello() {
            if (xmlHttp.readyState == 4) {
                

          //下面三行代码是测试的,测试从request返回的index是否能更新,结果是可以的,但是迭代器的就没思路了。
                var str = "${requestScope.index}"
                $("#container").append(str);
                $("#container").append("dd<br/>dd<br/>dd<br/>");          
            }
       }
</script>
</head>
<body>

<div id="container">
dd<br/>dd<br/>dd<br/>
</div>


<table id="table" width="100%" cellpadding="6" cellspacing="50" >

<!-- 循环输出 -->
<s:iterator value="#request.article" id="art">
<tr height="80">
<td bgcolor="#1582AB">
<font class="chinesefont105main"> <!-- 文章标题  --> 

<div>
<!-- 发表人-->
好友:<s:property value="#art.username"/>

<!-- 发表日志 -->

发表了日志(<s:property value="#art.title"/>)
</div>
<div align="right">
时间:<s:date name="#art.date"/>
</div>
</td>
</tr>
</s:iterator>

</table>

</body>

我是使用S2SH框架的,把返回的数据保存在request.setAttribute,  求大神指点感激不尽啊

Cloud_strife的主页 Cloud_strife | 初学一级 | 园豆:13
提问于:2014-04-24 22:15
< >
分享
最佳答案
0

其实无非就是鼠标滑过,异步获取数据,然后局部更新对吗?

那么肯的就是使用鼠标滑过,触发ajax事件, ajax回调成功,然后使用jquery来操作dom对象。 楼主好好优化、精简下你的代码, 可以使用jquery的, 就使用jquery, 另外你要知道的是ajax回调是你的程序在它自己的线程中处理完了响应的,所以局部更新, 肯的是通过javascript来操作DOM实现局部更新,而不是struts

收获园豆:50
telang | 小虾三级 |园豆:646 | 2014-04-25 09:23

对的、思路就是这样的、就是对javascript不熟、所以才是导致不知道改怎么写、我先查查基本知识、

Cloud_strife | 园豆:13 (初学一级) | 2014-04-25 09:36
其他回答(3)
0
收获园豆:30
滴答的雨 | 园豆:3660 (老鸟四级) | 2014-04-25 09:10

能给个思路吗、主要就是在ajax那里如何获取action的list之后在显示在界面上不了解、

支持(0) 反对(0) Cloud_strife | 园豆:13 (初学一级) | 2014-04-25 09:15

 他是基于java的 ssh.

支持(0) 反对(0) telang | 园豆:646 (小虾三级) | 2014-04-25 09:19

@Cloud_strife: 使用js跨域处理,返回javascript,再执行

支持(0) 反对(0) 滴答的雨 | 园豆:3660 (老鸟四级) | 2014-04-25 17:59

@滴答的雨(何雨泉): 我现在有个问题就是、在action中、我ajax如何获取?

var userList = eval('(' + xmlHttp.responseText + ')');
var user = eval(userList.JSONRESULT);

是上面这样的方式吗?原谅我js新手、看来得好好把基础学学、

支持(0) 反对(0) Cloud_strife | 园豆:13 (初学一级) | 2014-04-25 18:10
0

帮顶

收获园豆:20
[秦时明月] | 园豆:738 (小虾三级) | 2014-04-25 09:51
0

循环刷新数据是要用JS来做的,不能用那个S:什么的

因为是在前台

收获园豆:100
吴瑞祥 | 园豆:29449 (高人七级) | 2014-04-25 10:02

 确实、js是前台、struts2是服务端、2个是不同概念、我现在的想法是在前台把list转换成Json、然后通过ajax把json解析出来、

支持(0) 反对(0) Cloud_strife | 园豆:13 (初学一级) | 2014-04-25 11:02

@Cloud_strife: 通过ajax把json传到前台,你用jquery做ajax的时候,他取到的就是一个json对象,你直接for遍历然后绑到页面上就行的

支持(1) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2014-04-25 11:07

@吴瑞祥: 对的、我先试试、

支持(0) 反对(0) Cloud_strife | 园豆:13 (初学一级) | 2014-04-25 11:31
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册