Discuz!内置ajaxpost函数,配合showwindow来对提交的数据进行异步处理~
但是像我一样的初级开发者,使用起来还是有点吃力,比如像发送短消息(浮动情况)提交后,返回一个提示窗口,然后N秒后窗口消失。
看到pm_send.htm底部是这样的:- <script type="text/javascript" reload="1">
- function messagehandle_$handlekey(key, msg) {
- if(key == 1) {
- hideWindow('$handlekey');
- showDialog(msg, 'info');
- setTimeout(function () { hideMenu('fwin_dialog', 'dialog'); }, 3000);
- showCreditPrompt();
- $('return_$handlekey').innerHTML = '{lang pm_send}';
- $('return_$handlekey').className = '';
- }
- }
- </script>
复制代码 这段JS代码就是说,当短消息发送成功以后,先隐藏发短消息的主体窗口,然后激活一个新窗口,然后3秒后自动隐藏该窗口。
不过按照这个自己做下来,始终没有成功,反正是不得窍,所以在这里提交成功返回的时候,我投机取巧一下,用其他方法实现这个效果(不是提倡大家这么做,自己研究透彻才是王道,只是自己实在研究不透的时候可以投机一把)。
在php中,在数据提交成功的最后,命名两个变量,并且赋值:- $add = 'plugin.php?id=drc_shownow:show';
- $msg = $scriptlang['drc_shownow']['show_success'];
复制代码 $add就是提交成功后,N秒后隐藏窗口,然后跳转到的URL;
$msg就是提交成功时候弹出的提示窗口里的提示信息;
然后再模板的infloat区域,判断这些变量:- <!--{if $add && msg}-->
- <script type="text/javascript" reload="1">
- hideWindow('addtype');
- setTimeout("window.location.href='{$add}'", 2000);
- </script>
- <!--{/if}-->
复制代码 就是说,如果这两个变量存在,那么久执行这段JS代码,同样先隐藏主窗口,然后2秒后跳转到$add这个地址。
然后提示窗口怎么做呢?还是判断这两个变量:- <!--{if empty($msg) && empty($add)}-->
- 主题窗口内容
- <!--{else}-->
- <script type="text/javascript" reload="1">showDialog('$msg', 'info', '{lang drc_shownow:win_title}');</script>
- <!--{/if}-->
复制代码 就是说,如果这两个变量为空,那就显示正常的主体窗口,如果两个变量存在,那就显示一个小窗口(提示窗口);
这样的话配合上面的隐藏代码,就实现了隐藏主窗口,弹出提示窗口,N秒之后跳转/刷新页面。
投机做法,仅供大家参考,还是那句话,研究透彻DZ本身哪种用法,才是王道! |