有人用PHP+DWZ框架做后台吗?

gdljw 2013-03-21 03:41:10
最近用DWZ做后台,发现Tab跳转总不成功。官方上边的文档说太简单了,大家有没写过相关例子?我FORM提交后用JSON解释总跳不回去...

官方写法:
DWZ 表单提交dwz.ajax.js

· Ajax 表单提交后自动调用默认回调函数, 操作成功或失败提示.

Form标签上增加 onsubmit="return validateCallback(this);

· Ajax 表单提交后如果需要重新加载某个navTab或关闭dialog,可以使用dwz.ajax.js中事先定义的方法navTabAjaxDone/dialogAjaxDone

注意:如果表单在navTab页面上使用navTabAjaxDone,表单在dialog页面上使用dialogAjaxDone

Form标签上增加onsubmit="return validateCallback(this, navTabAjaxDone)"

或onsubmit="return validateCallback(this, dialogAjaxDone)"



· Ajax 表单提交后如果需要做一些其它处理也可以自定义一个回调函数xxxAjaxDone。例如下面表单提交成功后关闭当前navTab, 或者重新载入某个tab.

Form标签上增加onsubmit="return validateCallback(this, xxxAjaxDone)"

服务器端响应
Ajax表单提交后服务器端需要返回以下json代码:

{

"statusCode":"200",

"message":"操作成功",

"navTabId":"",

"rel":"",

"callbackType":"closeCurrent",

"forwardUrl":""

}



以下是dwz.ajax.js中定义的navTabAjaxDone和dialogAjaxDone代码片段:



/**

* navTabAjaxDone是DWZ框架中预定义的表单提交回调函数.

* 服务器转回navTabId可以把那个navTab标记为reloadFlag=1, 下次切换到那个navTab时会重新载入内容.

* callbackType如果是closeCurrent就会关闭当前tab

* 只有callbackType="forward"时需要forwardUrl值

* navTabAjaxDone这个回调函数基本可以通用了,如果还有特殊需要也可以自定义回调函数.

* 如果表单提交只提示操作是否成功, 就可以不指定回调函数. 框架会默认调用DWZ.ajaxDone()

* <form action="/user.do?method=save" onsubmit="return validateCallback(this, navTabAjaxDone)">

*

* form提交后返回json数据结构statusCode=DWZ.statusCode.ok表示操作成功, 做页面跳转等操作. statusCode=DWZ.statusCode.error表示操作失败, 提示错误原因.

* statusCode=DWZ.statusCode.timeout表示session超时,下次点击时跳转到DWZ.loginUrl

* {"statusCode":"200", "message":"操作成功", "navTabId":"navNewsLi", "forwardUrl":"", "callbackType":"closeCurrent"}

* {"statusCode":"300", "message":"操作失败"}

* {"statusCode":"301", "message":"会话超时"}

*

*/

function navTabAjaxDone(json){

DWZ.ajaxDone(json);

if (json.statusCode == DWZ.statusCode.ok){

if (json.navTabId){ //把指定navTab页面标记为需要“重新载入”。注意navTabId不能是当前navTab页面的

navTab.reloadFlag(json.navTabId);

} else { //重新载入当前navTab页面

navTabPageBreak();

}



if ("closeCurrent" == json.callbackType) {

setTimeout(function(){navTab.closeCurrentTab();}, 100);

} else if ("forward" == json.callbackType) {

navTab.reload(json.forwardUrl);

}

}

}



...全文
476 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gdljw 2013-03-28
  • 打赏
  • 举报
回复
原来IE10问题,用360正常!
gdljw 2013-03-21
  • 打赏
  • 举报
回复
页面还要加JS代码吗?我现在提交和保存数据在同一页面,提交后返回结果{"message":"\u63d0\u4ea4\u6210\u529f","statusCode":"200","navTabId":"gold","callbackType":""} 没有跳转回去。。
Bhoold 2013-03-21
  • 打赏
  • 举报
回复

<?php
$list_edit=basename(__FILE__);
$tmp=explode("_",$list_edit);
$list_index=$tmp[0].'_list.php';
define("INDEXPAGE",$list_index);
define("EDITPAGE",$list_edit);
define("MENU",$tmp[0]);
$table='access';

if(empty($_GET['id'])){$action='insert';}else{$action='update&id='.$_GET['id'];}
if(($_GET['action']=='update' and !empty($_GET['id'])) or $_GET['action']=='insert'){
	$arr = array( 
	'statusCode' => '0', 
	'message' => '提交失败', 
	'navTabId' => MENU,
	'callbackType' => '',
	'forwardUrl' => '',
	);
	$title=$_POST['title'];
	if($_GET['action']=='update'){//更新
		$sql="update $table set title='$title' where id=".(int)$_GET['id'];
	}else{//插入
		$createtime=time();
		$sql="insert into $table(title)values($title)";
	}
	if(mysql_query($sql)){$arr['message']="提交成功";$arr['statusCode']="1";}else{$arr['message']='提交失败';}
	$json_string = json_encode($arr); 
	echo $json_string;
}else{//读取
	if(!empty($_GET['id'])){
		$id=(int)$_GET['id'];
		$sql="select * from $table where id=$id";
		$result =mysql_query($sql);
		$Info = mysql_fetch_array($result,MYSQL_ASSOC);
	}
?>
<div class="pageContent">
	<form method="post" action="<?php echo EDITPAGE; ?>?action=<?php echo $action; ?>" class="pageForm required-validate" onsubmit="return iframeCallback(this, dialogAjaxDone);" enctype="multipart/form-data">
		<div class="pageFormContent" layoutH="56">
<table>
<tr>
<td height=30>标题:</td><td><input name="title" type="text" value="<?php echo $title;?>" size="60" /></td>
</tr>
</table>
		</div>
		<div class="formBar">
			<ul>
				<li><div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div></li>
				<li>
					<div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div>
				</li>
			</ul>
		</div>
	</form>
</div>
<?php
}
?>
gdljw 2013-03-21
  • 打赏
  • 举报
回复
我自已的代码

echo '<script type="text/javascript">
					var response ={
       "statusCode":"200",
      "message":"操作成功",
      "navTabId":"",
      "callbackType":"forward",
      "forwardUrl":"main.php"
					}
    </script>';
}

?>
<form action="right.php" method="post" enctype="multipart/form-data" onsubmit="return validateCallback(this, navTabAjaxDone)"
XPCMS 是由 zhu 利用业余时间,凭个人兴趣,独立开发的一个基于个人网站建设的CMS。没有任何商业元素驱动, 网站架构和功能也全是个人对于个人网站需求的理解,你可以自由下载并任意传播该程序,不过不能用于从事商业活动,如果进行二次开发或重新发布,必须注明是基于 XPCMS 改动而来的。    **************************XPCMS V2.0 特点**************************************** 1、基于ThinkPHP,Jquery,Dwz框架开发而来,完全遵循MVC开发思想,代码精炼规范,系统安全性高,运行效率高。 2、应用中心模块完全基于插件形式设计,可以自由移除,添加模块而不影响到其它模块。 2、程序,设计,功能等各方面高度协调统一,对BUG反应及时迅速。 3、界面简洁大气,关注于细节处理,模板制作简单,可以方便的制作适合自己的模板。 4、内置视频、音频播放器可以播放站内多媒体资源,展示自己的品味与爱好。 5、对SEO友好,可以自由指定每篇内容的关键字,描述以及给外界访问的URL,连显示的模板也是可以自由定制的。 6、网友可以向站长推荐音乐、视频、交换链接、留言评论等,促进站长与外界的交流。 7、后台实现了基于角色的权限控制系统,控制精确到每一个操作,方便多人管理后台。 8、作者将会不断开发插件和模板来丰富该CMS,一切好意见都有被采纳的机会。

20,359

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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