Ajax Form Post
基于Ajax 技术我们可以页面无刷新提交,给用户带来了更好的体验。然而我们每次在后台提交的时候,却有不少的麻烦。
考虑一个简单的登陆/注册校验用户名是否存在的Case, 下面是Login.jsp
<form name="loginFrm" action=<c:urlvalue="/servlet/doLogin.htm"/>method="post">
<input name="adminUser" type="hidden" value="Admin" />
<p align="center">Login</p><br>
UserName:
<input type="text" name="userName" value="<c:outvalue="${viewState.userName}"/>">
<input type="button" value="Check"
onclick="doCheckSubmit('<c:urlvalue='/servlet/doNameCheck.htm'/>')"/>
<div id="checkResultDiv" ></div>
<br>
Password:<input type="password" name="password">
<br>
<p>
<input type="submit" value="Submit" name="btnLogin" />
<input type="reset" value="Reset" name="btnReset" />
</p>
</form>
如果我们用Ajax提交的话,如下
function doCheckSubmit( actionUrl )
{
var ajaxObj = new AjaxObject();
actionUrl = actionUrl + "?userName=" + ocument.loginFrm.userName.value;
var res = ajaxObj.httpPost(actionUrl);
document.getElementById('checkResultDiv').innerHTML = '' + res + '';
}
ActionUrl中的Form对象,即参数必须我们手工每次去构造,如果参数很多的话,会比较麻烦。
而在服务器端,我们是如下处理的:
/**
* doNameCheckOld on user submit
*/
public ModelAndView doNameCheckOld(HttpServletRequest req, HttpServletResponse res, UserInfo info ) throws Exception {
// TODO Auto-generated method stub
// 注意:此时info的值为空
String userName = req.getParameter("userName");
if ( userName != null && userName.trim().toUpperCase().equals("USERNAME") )
{
res.getWriter().write(userName + " is already been used.");
}
else
{
res.getWriter().write("userName is not been used.");
}
return null;
}
此时info的值为空,因为我们使用Ajax提交,Ajax只是局部提交,所以我们后台无法取到Form的参数,只有靠传递参数来获取。String userName = req.getParameter("userName"); 所以此时cmd Model 完全无法发挥作用,当传递参数很多的时候难免会复杂容易出错。
解决方案:
Ajax 提供Form提交帮助函数,此时服务器端的cmd Model也可以用了。
//-------------------------------------------------------
// Date : 2007/01/25
// Desc : http Form PostForm
// include type : hidden,text,select, checkbox,radio,file
// none-include : button,submit,reset,image
// Params : frmID: Form's ID or Name
//-------------------------------------------------------
function httpPostForm(frmID, URL, data, contentType) {
//alert(URL);
URL += ('?' + getFormQueryString(frmID));
//alert(URL);
this.init(URL,data,contentType);
return trim(this.httpObj.responseText);
}
//-------------------------------------------------------
// Date : 2007/01/25
// Desc : Get all the from object
// include type : hidden,text,select, checkbox,radio,file
// none-include : button,submit,reset,image
// Params : frmID: Form's ID or Name
//-------------------------------------------------------
function getFormQueryString( frmID )
{
var i,queryString = "", and = "";
var item; // for each form's object
var itemValue;// store each form object's value
for( i=0;i
{
item = frmID[i];// get form's each object
if ( item.name!='' )
{
if ( item.type == 'select-one' )
{
itemValue = item.options[item.selectedIndex].value;
}
else if ( item.type=='checkbox' || item.type=='radio')
{
if ( item.checked == false )
{
continue;
}
itemValue = item.value;
}
else if ( item.type == 'button' || item.type == 'submit' ||
tem.type == 'reset' || item.type == 'image')
{// ignore this type
continue;
}
else
{
itemValue = item.value;
}
itemValue = encodeURIComponent(itemValue);
queryString += and + item.name + '=' + itemValue;
and="&";
}
}
return queryString;
}
JSP
function doCheckSubmit( actionUrl )
{
var ajaxObj = new AjaxObject();
//actionUrl = actionUrl + "?userName=" + document.loginFrm.userName.value;
var res = ajaxObj.httpPostForm(loginFrm,actionUrl);
document.getElementById('checkResultDiv').innerHTML = '' + res + '';
}
-----------------------------------------------------------------------------------------后台
/**
* do Login on user submit
*/
public ModelAndView doNameCheck(HttpServletRequest req, HttpServletResponse res,
UserInfo info ) throws Exception {
// TODO Auto-generated method stub
//String userName = req.getParameter("userName");
if ( info != null )
{
_logger.info(info.toString());
}
if ( info.getUserName() != null && info.getUserName().trim().toUpperCase().equals("USERNAME") )
{
res.getWriter().write(info.getUserName() + " is already been used.");
}
else
{
res.getWriter().write("userName is not been used.");
}
return null;
}
分享到:
相关推荐
**AjaxForm中文文档详解** AjaxForm是jQuery框架的一个插件,专门用于处理表单的Ajax提交,使得在不刷新整个页面的情况下实现数据的异步交互。这个插件不仅支持常规的Ajax提交,还支持文件上传,功能十分强大,能够...
method : 'POST', url : '/ajax_Day5/datas03.php', data : fd, success : function (data) { console.log(data); }, processData : false, contentType : false }); }); [removed] </body> &...
### AJAX POST 与 GET 提交的区别详解 #### 一、GET与POST基本概念及应用场景 在探讨AJAX中GET和POST的区别之前,我们先来了解一下这两种请求方式的基本概念。 **GET**请求通常用于获取资源信息,它将参数拼接到...
本文实例分析了TinyMCE提交AjaxForm获取不到数据的解决方法。分享给大家供大家参考。具体分析如下: 在没有使用AjaxForm前,我做的一个小小的评论提交的Web form,评论内容使用了TinyMCE做文本编辑。为了增加一点点...
Struts2和AjaxForm是两种在Web开发中广泛使用的技术,它们共同作用于提升用户体验,尤其是在处理表单数据时。Struts2是一个基于MVC(Model-View-Controller)架构的Java Web框架,它简化了Java Servlets和JSPs的开发...
使用jQuery的Ajax方法,如`$.ajax()`或`$.post()`,可以监听表单的提交事件,并阻止默认的表单提交行为。同时,使用jQuery Form插件的`submit()`方法,我们可以方便地将表单数据和文件一起发送到后端。 以下是实现...
在ajax中使用post方法,用常规的参数格式:param1=a1¶m2=a2 ,当参数长度过长时,依然提交不成功。比如我们经常这样写一个ajax的post请求: $.ajax({ type: "post", // post or get contentType:"application...
在IT领域,特别是Web开发中,使用Ajax(Asynchronous JavaScript and XML)进行form表单的无刷新提交是一项关键技能。这种技术允许网页在不重新加载整个页面的情况下与服务器交互,从而提高了用户体验。以下是对给定...
### Ajax的POST方法详解 #### 一、引言 在Web开发中,异步JavaScript与XML(Ajax)技术被广泛应用于提升用户体验,实现无需刷新页面即可加载数据的功能。本文将重点探讨Ajax中的POST方法,包括其基本原理、应用...
在这个“login-form-using-ajax.rar”压缩包中,我们重点关注的是如何利用Ajax来创建一个动态的登录表单,实现用户在不刷新整个页面的情况下,后台校验用户名是否存在。 首先,让我们理解Ajax的核心概念。Ajax是一...
使用jQuery选择器选取要处理的表单,并调用`.ajaxForm()`或`.form()`方法初始化插件。 ```javascript $('#myForm').ajaxForm(options); ``` 其中,`#myForm`是表单的ID,`options`是一个可选的对象参数,用于...
本主题聚焦于“验证用户、邮箱ajaxform”,这是一个使用Ajax技术进行用户输入验证的场景,通常涉及到用户注册、登录或其他需要验证用户信息的交互过程。Ajax,即异步JavaScript和XML,允许我们在不刷新整个页面的...
"Ajax Form提交 动态显示"这一主题涉及到如何利用AJAX处理表单提交,并实时更新页面内容。 1. **AJAX基础**: - AJAX的核心是XMLHttpRequest对象,它负责在后台与服务器通信。 - AJAX的工作流程包括创建...
1. 初始化插件:在jQuery选择器中调用`ajaxForm`或`ajaxSubmit`方法来初始化插件。例如: ```javascript $("#myForm").ajaxForm(options); ``` 其中,`options`是一个对象,包含了各种配置参数,如成功回调、错误...
### AJAX中使用JavaScript的send方法POST参数详解 #### 一、引言 在Web开发中,AJAX(Asynchronous JavaScript and XML)技术被广泛应用于实现网页的局部刷新,提升用户体验。其中,通过JavaScript发送POST请求是一...
本教程将详细讲解Django的Form表单验证以及如何结合Ajax实现无刷新验证。 首先,Django Form表单验证涉及以下关键概念: 1. **定义Form类**:在Django中,你需要创建一个继承自`forms.Form`或`forms.ModelForm`的...
2. Ajax的GET和POST请求实现。 3. 解决Ajax请求中文乱码问题。 4. PHP接收和发送JSON数据。 5. 结合MySQL数据库进行数据交互。 通过这个实例,开发者可以学习到如何创建一个能够动态获取和提交数据的Web应用,同时...
本篇将重点讲解如何使用POST方式发送AJAX请求,并对表单数据进行封装。 一、AJAX基本原理 AJAX基于JavaScript的XMLHttpRequest对象,该对象是浏览器内置的对象,用于在后台与服务器进行通信。通过创建...
通过使用该插件的ajaxForm和ajaxSubmit方法,可以实现不刷新页面的情况下提交表单,并通过Ajax技术与服务器进行异步通信。本文将介绍这两个方法的使用和它们之间的区别。 ### 依赖的脚本文件 使用jQuery.form.js...
2. 服务器端获取数据方式:对于 get 方式,服务器端用 Request.QueryString 获取变量的值,对于 post 方式,服务器端用 Request.Form 获取提交的数据。 3. 数据传送限制:get 传送的数据量较小,不能大于 2KB,而 ...