Ajax 局部刷新迭代器的内容

CloudStrifers 2014-04-24 05:21:38
最近在做个网站的、有个地方是想这样做的、就是滑动到下面、然后或触发滑动刷新事件、接着就通过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, 求大神指点感激不尽啊
...全文
245 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
CloudStrifers 2014-04-25
  • 打赏
  • 举报
回复
感谢版主啊、因为对javascript不是特别熟悉、我昨天也查了很多资料、也理解了这2个是一个服务端运行、一个客户端运行、我之前的思路是打算在Javascript中重新把返回的数据写个html 这样格式、但后来发现不好写、看了你的代码豁然开朗了、
引用 7 楼 showbo 的回复:
你的那个迭代器时服务器端的,要搞清楚客户端服务器端的运行循序 用js更新容器的innerHTML就行了 <table id="table" width="100%" cellpadding="6" cellspacing="50" > <tbody id="tbody"> <!-- 循环输出 --> <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> </tbody> </table>
document.getElementById('tbody').innerHTML+='ajax返回的内容'
  • 打赏
  • 举报
回复
你的那个迭代器时服务器端的,要搞清楚客户端服务器端的运行循序 用js更新容器的innerHTML就行了 <table id="table" width="100%" cellpadding="6" cellspacing="50" > <tbody id="tbody"> <!-- 循环输出 --> <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> </tbody> </table>
document.getElementById('tbody').innerHTML+='ajax返回的内容'
CloudStrifers 2014-04-24
  • 打赏
  • 举报
回复
CloudStrifers 2014-04-24
  • 打赏
  • 举报
回复
大师都回家吃饭了吗
CloudStrifers 2014-04-24
  • 打赏
  • 举报
回复
求大神指点啊、
CloudStrifers 2014-04-24
  • 打赏
  • 举报
回复
在线等、求求求、
CloudStrifers 2014-04-24
  • 打赏
  • 举报
回复
对了、就和QQ空间的功能一样、拉到最下面、就会再次加载好友动态、我这个就是模仿那个功能的、

52,792

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧