最近 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() が呼び出されます
*
<?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}?>