08-08
04

请教一个js访問Action的問趧

需求:网站中每一个用户都有自己的信箱,在用户没有操作的情况下,该用户如果收到了其他用户发来的邮件,该邮件便会自动打开一个窗口来显示器内容。  

我的想法是这樣:做一个页面,这个页面被打开之后是静止的,里面Js的代码每隔半分钟去调用一次Action,Action中来判断是否有了新的邮件,如果出现新邮件则在Session里面存储一个值,页面在Js在循环的时候,如果该值为非空的时候则打开一个姒该值为地址的新窗口,窗口中来显示新邮件的内容。  


Action里面  

public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response) {
        try {
            response.setContentType("text/html");
            PrintWriter out = response.getWriter();
            MessageForm messageForm = (MessageForm)form;

            UserBean userBean = (UserBean)request.getSession().getAttribute("userBean");//得到用户信息的JavaBean

            List list = ims.ifMessage(Integer.parseInt(userBean.getUser_dwid()));//这个方法为显示状态为未读的信息列表;

            //如果有信息,则输出信息的id号;否则则输出0
            if(list.size()>0){
                DccMessage dccMessage = (DccMessage)list.get(0);
                out.print(dccMessage.getId());
            }else{
                out.print("0");
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;




JSP里面的Javascript  


引用了prototype1.4.js

<script type="text/javascript">
setInterval("showMessage()", 30000);//每隔30秒执行一次

//定义Ajax
function showMessage(){
new Ajax.Request("/DCCCZXT/message/ifMessageAction.do",{method:'get',onComplete:po});
}

//如果接收到Action里面out出来的值为非0的情况下,则打开该新消息的窗口
function po(res){
var a=res.responseText
if(a!=0){
    window.open("/DCCCZXT/message/openMessageAction.do?id="+res.responseText,"","width=320,height=400");
}
}

</script>



[本日志由 blurxx 于 2008-08-04 04:51 PM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: JS Action
相关日志:
评论: 0 | 引用: 0 | 查看次数: 814
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭