`
youlong05
  • 浏览: 147651 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Ajax Form Post

    博客分类:
  • AJAX
阅读更多
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中文文档详解** AjaxForm是jQuery框架的一个插件,专门用于处理表单的Ajax提交,使得在不刷新整个页面的情况下实现数据的异步交互。这个插件不仅支持常规的Ajax提交,还支持文件上传,功能十分强大,能够...

    jQuery的ajax发送FormData的方式

    method : 'POST', url : '/ajax_Day5/datas03.php', data : fd, success : function (data) { console.log(data); }, processData : false, contentType : false }); }); [removed] &lt;/body&gt; &...

    ajax POST 与GET提交的区别

    ### AJAX POST 与 GET 提交的区别详解 #### 一、GET与POST基本概念及应用场景 在探讨AJAX中GET和POST的区别之前,我们先来了解一下这两种请求方式的基本概念。 **GET**请求通常用于获取资源信息,它将参数拼接到...

    TinyMCE提交AjaxForm获取不到数据的解决方法

    本文实例分析了TinyMCE提交AjaxForm获取不到数据的解决方法。分享给大家供大家参考。具体分析如下: 在没有使用AjaxForm前,我做的一个小小的评论提交的Web form,评论内容使用了TinyMCE做文本编辑。为了增加一点点...

    struts2+ajaxForm

    Struts2和AjaxForm是两种在Web开发中广泛使用的技术,它们共同作用于提升用户体验,尤其是在处理表单数据时。Struts2是一个基于MVC(Model-View-Controller)架构的Java Web框架,它简化了Java Servlets和JSPs的开发...

    ajax提交form表单和上传图片

    使用jQuery的Ajax方法,如`$.ajax()`或`$.post()`,可以监听表单的提交事件,并阻止默认的表单提交行为。同时,使用jQuery Form插件的`submit()`方法,我们可以方便地将表单数据和文件一起发送到后端。 以下是实现...

    ajax快速解决参数过长无法提交成功的问题

    在ajax中使用post方法,用常规的参数格式:param1=a1&param2=a2 ,当参数长度过长时,依然提交不成功。比如我们经常这样写一个ajax的post请求: $.ajax({ type: "post", // post or get contentType:"application...

    ajax提交form表单

    在IT领域,特别是Web开发中,使用Ajax(Asynchronous JavaScript and XML)进行form表单的无刷新提交是一项关键技能。这种技术允许网页在不重新加载整个页面的情况下与服务器交互,从而提高了用户体验。以下是对给定...

    Ajax的post方法的使用

    ### Ajax的POST方法详解 #### 一、引言 在Web开发中,异步JavaScript与XML(Ajax)技术被广泛应用于提升用户体验,实现无需刷新页面即可加载数据的功能。本文将重点探讨Ajax中的POST方法,包括其基本原理、应用...

    login-form-using-ajax.rar_ajax form_ajax login_ajax login form

    在这个“login-form-using-ajax.rar”压缩包中,我们重点关注的是如何利用Ajax来创建一个动态的登录表单,实现用户在不刷新整个页面的情况下,后台校验用户名是否存在。 首先,让我们理解Ajax的核心概念。Ajax是一...

    Ajax表单提交插件jquery form

    使用jQuery选择器选取要处理的表单,并调用`.ajaxForm()`或`.form()`方法初始化插件。 ```javascript $('#myForm').ajaxForm(options); ``` 其中,`#myForm`是表单的ID,`options`是一个可选的对象参数,用于...

    验证用户、邮箱ajaxform

    本主题聚焦于“验证用户、邮箱ajaxform”,这是一个使用Ajax技术进行用户输入验证的场景,通常涉及到用户注册、登录或其他需要验证用户信息的交互过程。Ajax,即异步JavaScript和XML,允许我们在不刷新整个页面的...

    ajax form 提交 动态显示

    "Ajax Form提交 动态显示"这一主题涉及到如何利用AJAX处理表单提交,并实时更新页面内容。 1. **AJAX基础**: - AJAX的核心是XMLHttpRequest对象,它负责在后台与服务器通信。 - AJAX的工作流程包括创建...

    jquery form ajax 插件

    1. 初始化插件:在jQuery选择器中调用`ajaxForm`或`ajaxSubmit`方法来初始化插件。例如: ```javascript $("#myForm").ajaxForm(options); ``` 其中,`options`是一个对象,包含了各种配置参数,如成功回调、错误...

    ajax中使用javascript的send方法post参数

    ### AJAX中使用JavaScript的send方法POST参数详解 #### 一、引言 在Web开发中,AJAX(Asynchronous JavaScript and XML)技术被广泛应用于实现网页的局部刷新,提升用户体验。其中,通过JavaScript发送POST请求是一...

    Django之Form表单验证及Ajax验证方式汇总

    本教程将详细讲解Django的Form表单验证以及如何结合Ajax实现无刷新验证。 首先,Django Form表单验证涉及以下关键概念: 1. **定义Form类**:在Django中,你需要创建一个继承自`forms.Form`或`forms.ModelForm`的...

    php+Ajax(GET&POST)完美实例

    2. Ajax的GET和POST请求实现。 3. 解决Ajax请求中文乱码问题。 4. PHP接收和发送JSON数据。 5. 结合MySQL数据库进行数据交互。 通过这个实例,开发者可以学习到如何创建一个能够动态获取和提交数据的Web应用,同时...

    POST方式发送ajax请求

    本篇将重点讲解如何使用POST方式发送AJAX请求,并对表单数据进行封装。 一、AJAX基本原理 AJAX基于JavaScript的XMLHttpRequest对象,该对象是浏览器内置的对象,用于在后台与服务器进行通信。通过创建...

    浅谈jquery.form.js的ajaxSubmit和ajaxForm的使用

    通过使用该插件的ajaxForm和ajaxSubmit方法,可以实现不刷新页面的情况下提交表单,并通过Ajax技术与服务器进行异步通信。本文将介绍这两个方法的使用和它们之间的区别。 ### 依赖的脚本文件 使用jQuery.form.js...

    Ajax中get与post请求详解

    2. 服务器端获取数据方式:对于 get 方式,服务器端用 Request.QueryString 获取变量的值,对于 post 方式,服务器端用 Request.Form 获取提交的数据。 3. 数据传送限制:get 传送的数据量较小,不能大于 2KB,而 ...

Global site tag (gtag.js) - Google Analytics