ajax跨頁面提交表單
前面提到過重復(fù)提交表單問題,處理token口令校驗(yàn)、重定向之外,還有一種經(jīng)常使用到的方法就是新頁面處理表單提交,完成后關(guān)閉當(dāng)前頁面,并刷新之前發(fā)送請(qǐng)求的頁面。
這里使用了artDialog.js
1、文件結(jié)構(gòu)
2、user.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="/struts-tags" prefix="s"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>user列表</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <script type="text/javascript" src="/MySSH2/jquery-1.7.js"></script> <script type="text/javascript" src="/MySSH2/artDialog.js?skin=default"></script> <script type="text/javascript"> function openA(){ window.open("/MySSH2/user/manage_addUI"); } </script> </head> <body> <br/> <a href="<s:url action="manage_addUI" namespace="/user"/>">添加用戶</a> <a href="javascript:void(0)" onclick="openA()">添加用戶</a> <br/> 用戶列表:<br/> <s:iterator value="#request.users"> id:<s:property value="id"/><br/> name:<s:property value="name"/><br/> </s:iterator> </body> </html>
3、userAdd.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="/struts-tags" prefix="s"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>用戶添加</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <script type="text/javascript" src="/MySSH2/jquery-1.7.js"></script> <script type="text/javascript"> function AddUser(){ var submitData = $('#userForm').serialize(); console.log(submitData); $.ajax({ type : "post", url : "/MySSH2/user/manage_add", cache : false, data: submitData, dataType : 'json', success : function(result) { <span style="white-space:pre"> </span>if(result.success){ window.opener.art.dialog({time:2,content:'保存成功'}); setTimeout(function(){window.opener.location.reload();},3); } else{ <span style="white-space:pre"> </span> window.opener.art.dialog({time:2,content:'保存失敗'}); setTimeout(function(){window.opener.location.reload();},3); } window.close(); }, error : function(XMLHttpRequest, textStatus, errorThrown) { alert("error"); } }); } </script> </head> <body> <s:form id="userForm" action="manage_add" namespace="/user" method="post"> 用戶名:<s:textfield name="user.name"/><br/><s:token></s:token> <input type="button" value="保存" onclick="AddUser()"/> </s:form> </body> </html>
4、UserManageAction.java
package com.myssh2.action; import java.io.IOException; import java.io.PrintWriter; import javax.annotation.Resource; import javax.servlet.ServletException; import org.apache.struts2.ServletActionContext; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Controller; import com.myssh2.bean.User; import com.myssh2.service.UserService; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; @Controller @Scope("prototype") public class UserManageAction extends ActionSupport{ @Resource UserService userService; private User user; public User getUser() { return user; } public void setUser(User user) { this.user = user; } public String addUI(){ return "add"; } public void add() throws ServletException, IOException{ ServletActionContext.getResponse().setContentType("text/html;charset=utf-8"); PrintWriter out = ServletActionContext.getResponse().getWriter(); try { userService.addUser(user); ActionContext.getContext().put("message", "保存成功"); out.write("{\"success\":true}"); } catch (Exception e) { e.printStackTrace(); out.write("{\"success\":false,\"msg\":\"error\"}"); } } }
頁面效果
提交表單時(shí)使用$('#userForm').serialize();序列化表單數(shù)據(jù)
window.opener.art.dialog({time:2,content:'保存成功'});則是返回使用window.open的頁面(或者理解為父頁面),并調(diào)用artDialog插件的定時(shí)關(guān)閉dialog
setTimeout(function(){window.opener.location.reload();},3);使用定時(shí)器刷新使用window.open的頁面(或者理解為父頁面),dialog和reload的時(shí)間設(shè)置問題需重新調(diào)整。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Ajax提交表單時(shí)驗(yàn)證碼自動(dòng)驗(yàn)證 php后端驗(yàn)證碼檢測(cè)
- JS實(shí)現(xiàn)支持Ajax驗(yàn)證的表單插件
- jquery ajax提交表單數(shù)據(jù)的兩種方式
- jquery實(shí)現(xiàn)ajax提交form表單的方法總結(jié)
- jQuery使用ajaxSubmit()提交表單示例
- JQuery通過Ajax提交表單并返回結(jié)果
- JQuery打造PHP的AJAX表單提交實(shí)例
- jquery的ajaxSubmit()異步上傳圖片并保存表單數(shù)據(jù)演示代碼
- jQuery ajax中使用serialize()方法提交表單數(shù)據(jù)示例
- jquery序列化form表單使用ajax提交后處理返回的json數(shù)據(jù)
相關(guān)文章
琥珀無限級(jí)分類聯(lián)動(dòng)菜單AJAX版
琥珀無限級(jí)分類聯(lián)動(dòng)菜單AJAX版...2006-11-11ajax跨域獲取網(wǎng)站json數(shù)據(jù)的實(shí)例
下面小編就為大家分享一篇ajax跨域獲取網(wǎng)站json數(shù)據(jù)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2017-12-12多ajax請(qǐng)求的各類解決方案(同步, 隊(duì)列, cancel請(qǐng)求)
ajax帶來很好的用戶體驗(yàn),于是一個(gè)稍微注重web系統(tǒng)使用ajax基本成為必然。當(dāng)傳統(tǒng)功能型web項(xiàng)目向用戶體驗(yàn)型項(xiàng)目轉(zhuǎn)變時(shí),層出不窮的需求就來了。正如本篇所介紹的就是一個(gè)多個(gè)AJAX請(qǐng)求的情況下,如何利用jquery來處理幾種case2012-03-03有關(guān)ajax的error與后臺(tái)的異常問題解決
這篇文章主要介紹了關(guān)于ajax的error與后臺(tái)的異常,需要的朋友可以參考下2014-02-02jquery ajax多次請(qǐng)求數(shù)據(jù)時(shí) 不刷新問題的解決方法
下面小編就為大家?guī)硪黄猨query ajax多次請(qǐng)求數(shù)據(jù)時(shí) 不刷新問題的解決方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-10-10AJAX如何接收J(rèn)SON數(shù)據(jù)示例介紹
如何使用AJAX返回JSON數(shù)據(jù),就是dataType,當(dāng)你設(shè)置json后返回的json字符串傳遞到客戶端就是JSON對(duì)象了,示例如下,感興趣的朋友可以參考下2013-08-08Ajax+Asp源代碼]讀取數(shù)據(jù)庫內(nèi)容的表格(沒有用框架)
Ajax+Asp源代碼]讀取數(shù)據(jù)庫內(nèi)容的表格(沒有用框架)...2006-11-11讓ajax更加友好的實(shí)現(xiàn)方法(實(shí)時(shí)顯示后臺(tái)處理進(jìn)度。)
我們能否讓ajax更加友好點(diǎn),實(shí)時(shí)顯示服務(wù)器處理的進(jìn)度了?這在一些長(zhǎng)時(shí)間的請(qǐng)求中尤其重要,比如上傳文件、發(fā)送郵件、批量處理數(shù)據(jù)。2010-06-06php+ajax實(shí)現(xiàn)帶進(jìn)度條的大數(shù)據(jù)排隊(duì)導(dǎo)出思路以及源碼
最近在做一個(gè)項(xiàng)目,我們現(xiàn)在有很多數(shù)據(jù),分表存放,項(xiàng)目要求在導(dǎo)出的時(shí)候需要有進(jìn)度條。經(jīng)過一番思索,完成了一下內(nèi)容,分享給大家。最后面有完整代碼。2014-05-05