日期:2014-05-19  浏览次数:20674 次

求解:ssh + ajax 无刷新去取数据库里的数据,但页面拿不到值
在action中集合已经有值 用<s:debug></s:debug>标签可以看到值栈 和request里面确都没有值,下面贴代码求解:

首先是展示的页面:
HTML code

<s:iterator value="#request.list" var="user">
    <tr>
        <td><s:property value="#user.id"/></td>
        <td><s:property value="#user.name"/></td>
        <td><s:property value="#user.address"/></td>
        <td><a href="#">删除</a> </td>
    </tr>



下面是js访问action
JScript code

//加载所有按钮
$("#lookAll").click(function() {
   $.post("user!loadAll.action",null,function(res){
        $("#allRes").show();
    });
});



接下来是action
Java code

private List<User> list;

public void loadAll() {
    list = userService.loadAll();
    System.out.println(list.size());//已经确定list有值
    getRequest().setAttribute("list", list);//但在值栈和request中确没有值
}

//getter... setter...
public List<User> getList() {
    return list;
}
    
public void setList(List<User> list) {
    this.list = list;
}



------解决方案--------------------
request只在傳過來時拿到值,你用ajax是不能改變他的現在的值的,更何況你頁面加載完已經變成靜態了,即使你再控制顯示,值也是已經確定了,你應該針對那個按鈕去set它的值,不用再使用struts2標簽和request了!
------解决方案--------------------
ajax 是异步的 你只能取到数据之后,然后通过DOM操作一个一个的将取到的值set进去
------解决方案--------------------
哦哦,应该这样说,div本来是空的,用ajax刷新下,将取到的数据放到div里面。第一次的加载页面的话可以在页面加载完成后调用一次这个ajax方法,div就有数据了。