Home > Backend Development > PHP Tutorial > 有人用PHP+DWZ框架做后台吗?

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

WBOY
Release: 2016-06-23 14:04:08
Original
907 people have browsed it

最近用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提交后返回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);

            }

      }

}

 


回复讨论(解决方案)

我自已的代码

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

<?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}?>
Copy after login

页面还要加JS代码吗?我现在提交和保存数据在同一页面,提交后返回结果{"message":"\u63d0\u4ea4\u6210\u529f","statusCode":"200","navTabId":"gold","callbackType":""} 

没有跳转回去。。

原来IE10问题,用360正常!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template