页面跳转并提示的解决方案

在页面处理成功之后,总要有个提示。这个时候不用ajax的话,就必须跳转到新的页面。同时有提示信息。

我是的思路是,处理成功之后,获取到提示信息,和提示类型或成功或错误消息。

$this->_redtest("1","success","/news/index/listmy");

调用_redtest方法,传递三个参数,1表示成功消息。

success表示提示内容,可以处理成相应的中文提示。

之后的是连接地址。

function _redtest($msgtype = false,$message = false, $url = false, $target = false) {
        $redurl = $url;
        if ($message)
            $param[] = 'message=' . $message;
        if ($msgtype)
            $param[] = 'msgtype=' . $msgtype;
        if ($target)
            $param[] = 'target=' . $target;
        if (count($param) > 0) {
            $redurl .= '?' . join('&', $param);
        }
        $this->_redirect($redurl);
        /*echo "<script type='text/javascript'>";  
        echo "window.location.href='$url'";  
        echo "</script>";  
        */
        exit;
    }

完了之后,直接跳转到新的页面。

新的页面对参数进行处理。

/**消息提示begin*/
        $translate = Zend_Registry::get('Zend_Translate'); //引入翻译接口
        $message = $this->_request->getParam('message');
        $msgtype = $this->_request->getParam('msgtype');
        $reloadurl = explode('?', $_SERVER['REQUEST_URI']);
        $reloadurl = $reloadurl[0];
        $this->view_->assign('reloadurl', $reloadurl);
        $this->view_->assign('msgtype', $msgtype);
        $this->view_->assign('message', $translate->_($message));
        /**消息提示end*/

并传递到tpl视图中。

视图中获取到参数,并作出相应的效果。

<!--消息提示-->
<script>
$(function(){
    var message = "<!--{$message}-->";
    var msgtype = "<!--{$msgtype}-->";

    if(message){
        if(msgtype){
            if(msgtype=="1"){
                showMsg("msg",message,"2000");
            }else{
                showMsg("errmsg",message,"2000");
            }
        }else{
            showMsg('msg',message,"2000");
        }
        reloadurl();
        //window.location = "<!--{$reloadurl}-->";
    }
});

function reloadurl()
{
    var t=setTimeout("window.location = '<!--{$reloadurl}-->'",2000);
}
function showMsg(msgtype,msgcontent,time){
    $("#msgBoxDIV span").attr("class",msgtype).text(msgcontent); //获取提示信息并设置
    $("#msgBoxDIV").show();
    setTimeout(function () {
    $("#msgBoxDIV").hide();
    }, time);
}

</script>
<div id="msgBoxDIV" style="position: absolute;  90%; padding-top: 2px; height: 24px; top: 75px; text-align: center; display:none;">
        <span class="msg"></span>
</div>

避免刷新会重复提示消息的方法。再次跳转。

function reloadurl()
{
    var t=setTimeout("window.location = '<!--{$reloadurl}-->'",2000);
}

效果如下:

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注