DWZ框架Ajax表单提交


普通Ajax表单提交方式

DWZ 表单提交dwz.ajax.js

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

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

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

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

navTabAjaxDoneDWZ框架中预定义的表单提交回调函数. 服务器转回navTabId可以把那个tab标记为reloadFlag=1, 次下切换到那个tab时会重新载入内容. navTabId如果是closeCurrent就会关闭当前tab 

navTabAjaxDone这个回调函数基本可以通用了, 如果还有特殊需要也可以自定义回调函数. 如果表单提交只提示操作是否成 功, 就可以不指定回调函数. 框架会默认调用ajaxDone()

 

{statusCode:200, message:"操作成功", navTabId:"closeCurrent"}

{statusCode:200, message:"操作成功", navTabId:"page1"}

 

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

 

 

:

<form method="post" action="url" class="pageForm required-validate" onsubmit="return validateCallBack(this);"> 

<div class="pageFormContent" layoutH="56"> 

      <p> 

            <label>E-Mail</label> 

            <input class="required email" name="email" type="text" size="30" /> 

      </p> 

      <p> 

            <label>客户名称:</label> 

            <input class="required" name="name" type="text" size="30" />

      </p>

</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>

文件上传表单提 交方式

 

因为Ajax不支持enctype="multipart/form-data" 所以用隐藏iframe来处理 无刷新表单提交.  

<form method="post" action="url" class="pageForm required-validate" enctype="multipart/form-data" onsubmit="return ifarmeCallback(this);">

<form method="post" action="url" class="pageForm required-validate" enctype="multipart/form-data" onsubmit="return ifarmeCallback(this, xxxCallback);">

 

服务器端需要返回

<script type="text/javascript">

      var statusCode="${statusCode}";

      var message="${message}";                        

      var navTabId="${navTabId}";

 

      var response = {statusCode:statusCode,

                  message:message,

                  navTabId:navTabId

            }

      if(window.parent.donecallback) window.parent.donecallback(response);

</script>

 

 

Java服务器端表单处理示例

public class UserAction extends BaseAction {

 

public ActionForward changePwd(ActionMapping mapping, BaseActionForm bForm,

            HttpServletRequest request, HttpServletResponse response)

            throws IOException, ServletException {

      UserForm form = (UserForm) bForm;

 

      if (form.getOldPassword() == null

                  || "".equals(form.getOldPassword().trim())) {

            request.setAttribute("statusCode", 300);

            request.setAttribute("message", this.getMessage(request,

                  "msg.oldpassword.invalid"));

            return mapping.findForward("done");

      }

 

      User user = AppContextHolder.getContext().getUser();

 

      try {

            UserManager uManager = BusinessFactory.getFactory()

                        .getUserManager();

            uManager.changePassword(user, form.getOldPassword(), form

                        .getPassword());

            request.setAttribute("statusCode", 200);

            request.setAttribute("message", this.getMessage(request,

                  "msg.operation.success"));

      } catch (PasswordNotCorrectException e) {

            request.setAttribute("statusCode", 300);

            request.setAttribute("message", this.getMessage(request,

                  "msg.password.incorrect"));

      }

 

      return mapping.findForward("done");

}

protected ActionForward callbackForward(ActionMapping mapping,

            HttpServletRequest request) {

      if (ServerInfo.isAjax(request))

            return mapping.findForward("done");

      return mapping.findForward("callbackDone");

}

 

}

public

转载于:https://my.oschina.net/dwz/blog/4163

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值