>백엔드 개발 >PHP 튜토리얼 >有人用PHP+DWZ框架做后台吗?

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

WBOY
WBOY원래의
2016-06-23 14:04:08921검색

最近用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>';}?>

<?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}?>

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

没有跳转回去。。

原来IE10问题,用360正常!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:wamp다음 기사:关于读取数据编码问题