ホームページ >バックエンド開発 >PHPチュートリアル >バックエンドとして PHP+DWZ フレームワークを使用している人はいますか?

バックエンドとして PHP+DWZ フレームワークを使用している人はいますか?

WBOY
WBOYオリジナル
2016-06-23 14:04:08920ブラウズ

最近 DWZ をバックエンドとして使用しましたが、タブ ジャンプが常に失敗することがわかりました。公式ドキュメントには単純すぎると書かれていますが、関連する例はありますか? FORM を送信した後、JSON を使用して説明しますが、戻ることはできません...

公式記述:
DWZ フォーム送信 dwz.ajax.js

·フォーム追加 onsubmit="return validateCallback(this);

· Ajax フォームの送信後に navTab を再ロードするかダイアログを閉じる必要がある場合は、dwz.ajax.js の事前定義メソッド navTabAjaxDone/dialogAjaxDone を使用できます

注: フォームが navTab ページで navTabAjaxDone を使用する場合、フォームはダイアログ ページで DialogAjaxDone を使用します

Form タグに onsubmit="return validateCallback(this, navTabAjaxDone)"

または onsubmit="return validateCallback(this, DialogAjaxDone)" を追加します



· 必要な場合Ajax フォームの送信後に他の処理を実行するには、コールバック関数 xxxAjaxDone をカスタマイズすることもできます。たとえば、フォームが正常に送信された後、現在の navTab を閉じるか、タブをリロードします。

onsubmit="return validateCallback()" を追加します。これを Form タグに追加し、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 の場合、現在のタブが閉じられます。

* callbackType="forward " のみ forwardUrl 値が必要です

* navTabAjaxDone のコールバック関数は基本的に汎用です。特別なニーズがある場合は、コールバック関数をカスタマイズすることもできます

* フォームの送信時にのみ、操作が成功した場合、コールバック関数を指定する必要はありません。フレームワークはデフォルトで DWZ.ajaxDone() が呼び出されます

* ccf45681997ff4a71c8830aa9fb071de

*

* フォーム送信後に json データを返す statusCode=DWZ.statusCode.ok 構造は、操作が成功したことを意味し、ページ ジャンプやその他の操作を実行できます。 .error は操作が失敗したことを意味し、エラーの原因を尋ねます

* statusCode=DWZ.statusCode.timeout はセッションがタイムアウトしたことを意味し、次回クリックすると DWZ.loginUrl にジャンプします

* {" statusCode":"200"、"message":"操作が成功しました"、"navTabId":"navNewsLi"、"forwardUrl":""、"callbackType":"closeCurrent "}

* {"statusCode":"300" , "message":"操作が失敗しました"}

* {"statusCode":"301", "message":"セッションタイムアウト"}

*

*/

function navTabAjaxDone(json){

DWZ.ajaxDone(j)息子)

if (json.statusCode == DWZ.statusCode.ok) {F
IF (json.navtabid) {// は、指定された Navtab ページを「再読み込み」する必要がある「再読み込み」としてマークしました。 Navtabidは現在のNavtabページになることはできないことに注意してください。} else {//現在のnavtabページをリロードif( "closecurrent" == json.callbacktype){
}、100);ディスカッション (解決策) へ

私自身のコード

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":"u63d0u4ea4u6210u529f","statusCode":"200","navTabId":"gold","callbackType":""} として返されます。

ジャンプ禁止 引き返す。 。

IE10 では問題があることが判明しましたが、360 では正常に動作します。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:ワンプ次の記事:ワンプ