Jquery.Form 异步提交表单的简单实例


Posted in Javascript onMarch 03, 2014

http://www.vaikan.com/docs/jquery.form.plugin/jquery.form.plugin.html#

1. 在你的页面里写一个表单。一个普通的表单,不需要任何特殊的标记:

<form id="myForm" method="post" action="/Home/AjaxForm">
<div>
Name:<input id="username" name="username" type="text" />  
Password:<input id="password" name="password" type="text" />
<br />
<input type="submit" value="submit async" id="lnkSubmit" />
</div>
</form>

在没有Jquery.Form组件的时候,提交表单,页面会进入阻塞模式,等待服务器端的响应。

2. 引入jQuery和Form Plugin Javascript脚本文件并且添加几句简单的代码让页面在DOM加载完成后初始化表单:

<head>    
<script type="text/javascript" src="path/to/jquery.js"></script>    
<script type="text/javascript" src="path/to/form.js"></script>     
<script type="text/javascript">        
// wait for the DOM to be loaded        
$(document).ready(function() {            
// bind 'myForm' and provide a simple callback function            
// 为myform绑定ajaxForm异步提交事件,并提供一个简单的回调函数。           
$('#myForm').ajaxForm(function() {                
alert("Thank you for your comment!");            
});        
});    
</script>
</head>
加上jquery.form组件后,提交表单时,页面不会再同步提交,而是由js做异步提交,因此提交后页面不会有刷新。

3. 加入能够与服务器端进行交互的回调函数。

$(document).ready(function () { 
     //options是一个ajaxForm的配置对象。?
     var options = { 
        //target: '#output1',   // target element(s) to be updated with server response  
        //beforeSubmit: showRequest,  // pre-submit callback  
       <FONT color=#ff0000> success: callBackFunc  // post-submit callback</FONT>          // other available options:  
        //url:       url         // override for form's 'action' attribute  
        //type:      type        // 'get' or 'post', override for form's 'method' attribute  
        //dataType:  null        // 'xml', 'script', or 'json' (expected server response type)  
        //clearForm: true        // clear all form fields after successful submit  
        //resetForm: true        // reset the form after successful submit  
        // $.ajax options can be used here too, for example:  
        //timeout:   3000  
    }; 
    // bind form using 'ajaxForm'  
    $('#myForm').ajaxForm(options); 
});  

 // responseText是服务端的响应值。statusText是页面 
 // 提交状态值,success表示成功。 
function callBackFunc(responseText, statusText) { 
    if (statusText == 'success') { 
        alert(responseText); 
    } 
 else{ 
 alert(“服务端错误!”); 
      } 
} 
如果返回的是json数据则回调函数可以这么写 
function resultFunction(responseText,statusText) { 
        if (statusText == 'success') { 
            if (responseText.code == 1) { 
                alert(responseText.message); 
            }  
            else { 
                alert('error occurs!'); 
            } 
        } 
        else { 
            alert('服务器错误!'); 
        } 
    }

服务端的代码如下:
[HttpPost] 
public ActionResult AjaxForm(FormCollection form) 
{ 
    string message = "Name:" + form["username"] + " PWD: "+form["password"]  ; 
    //return Content(message); 
    return Json(new { code = 1, message = message }); 
}

4. 加入提交前的数据校验函数
为options对象添加 beforeSubmit属性
var options = { 
                //target: '#output1',   // target element(s) to be updated with server response  
                <FONT color=#ff0000>beforeSubmit: checkData,  // pre-submit callback  
</FONT>                success: callBackFunc  // post-submit callback                  // other available options:  
                //url:       url         // override for form's 'action' attribute  
                //type:      type        // 'get' or 'post', override for form's 'method' attribute  
                //dataType:  null        // 'xml', 'script', or 'json' (expected server response type)  
                //clearForm: true        // clear all form fields after successful submit  
                //resetForm: true        // reset the form after successful submit  
                // $.ajax options can be used here too, for example:  
                //timeout:   3000  
            }; 
 // pre-submit callback  
       function checkData(formData, jqForm, options) { 
           // formData is an array; here we use $.param to convert it to a string to display it  
           // but the form plugin does this for you automatically when it submits the data  
           //var queryString = $.param(formData); 
           // jqForm is a jQuery object encapsulating the form element.  To access the  
           // DOM element for the form do this:  
           var formElement = jqForm[0];  
           //alert('About to submit: \n\n' + queryString); 
           // here we could return false to prevent the form from being submitted;  
           // returning anything other than false will allow the form submit to continue  
           //return true; 
           if ($(formElement).find("#username").val() == "") { 
               alert("please enter username!"); 
               return false; 
           } else { 
               return true; 
           } 
       }

验证用户名是否为空,是则提示输入,并取消表单提交。
Javascript 相关文章推荐
JavaScript之编码规范 推荐
May 23 Javascript
在javascript中关于节点内容加强
Apr 11 Javascript
JS正则表达式大全(整理详细且实用)
Nov 14 Javascript
21个值得收藏的Javascript技巧
Feb 04 Javascript
jQuery中通过ajax调用webservice传递数组参数的问题实例详解
May 20 Javascript
Angular2学习教程之ng中变更检测问题详解
May 28 Javascript
Angular2之二级路由详解
Aug 31 Javascript
微信小程序学习笔记之本地数据缓存功能详解
Mar 29 Javascript
后台使用freeMarker和前端使用vue的方法及遇到的问题
Jun 13 Javascript
Vue.js组件props数据验证实现详解
Oct 19 Javascript
vue 手机物理监听键+退出提示代码
Sep 09 Javascript
详解Vue.js 可拖放文本框组件的使用
Mar 03 Vue.js
jquery实现ajax提交form表单的方法总结
Mar 03 #Javascript
SeaJS入门教程系列之SeaJS介绍(一)
Mar 03 #Javascript
js的hasownproperty使用示例
Mar 02 #Javascript
javascript对象的使用和属性操作示例详解
Mar 02 #Javascript
使用js显示当前时间示例
Mar 02 #Javascript
jquery实现背景墙聚光灯效果示例分享
Mar 02 #Javascript
jquery制作弹窗提示窗口代码分享
Mar 02 #Javascript
You might like
Ajax PHP分页演示
2007/01/02 PHP
java EJB 加密与解密原理的一个例子
2008/01/11 PHP
用php获取远程图片并把它保存到本地的代码
2008/04/07 PHP
PHP禁止页面缓存的代码
2011/10/23 PHP
php的webservice的wsdl的XML无法显示问题的解决方法
2014/03/11 PHP
PHP文件上传之多文件上传的实现思路
2016/01/27 PHP
PHP7安装Redis扩展教程【Linux与Windows平台】
2016/09/30 PHP
PHP 以POST方式提交XML、获取XML,解析XML详解及实例
2016/10/26 PHP
php 中奖概率算法实现代码
2017/01/25 PHP
Yii2.0中使用js异步删除示例
2017/03/10 PHP
用JavaScript脚本实现Web页面信息交互
2006/12/21 Javascript
推荐20家国外的脚本下载网站
2011/04/28 Javascript
JS判定是否原生方法
2013/07/22 Javascript
js实现绿白相间竖向网页百叶窗动画切换效果
2015/03/02 Javascript
JS+CSS实现自适应选项卡宽度的圆角滑动门效果
2015/09/15 Javascript
详解jQuery的Cookie插件
2016/11/23 Javascript
nodejs进阶(6)—连接MySQL数据库示例
2017/01/07 NodeJs
JavaScript对象的浅拷贝与深拷贝实例分析
2018/07/25 Javascript
JS如何实现动态添加的元素绑定事件
2019/11/12 Javascript
vue自定义组件(通过Vue.use()来使用)即install的用法说明
2020/08/11 Javascript
[04:46]2018年度玩家喜爱的电竞媒体-完美盛典
2018/12/16 DOTA
Python函数返回值实例分析
2015/06/08 Python
Python 2与Python 3版本和编码的对比
2017/02/14 Python
Python中顺序表的实现简单代码分享
2018/01/09 Python
python 平衡二叉树实现代码示例
2018/07/07 Python
Python eval的常见错误封装及利用原理详解
2019/03/26 Python
python gensim使用word2vec词向量处理中文语料的方法
2019/07/05 Python
Python装饰器原理与基本用法分析
2020/01/07 Python
塔吉特百货公司官网:Target
2017/04/27 全球购物
苏格兰在线威士忌商店:The Whisky Barrel
2019/05/07 全球购物
Android笔试题总结
2014/11/29 面试题
介绍一下SQL Server的全文索引
2013/08/15 面试题
店长岗位的工作内容
2013/11/12 职场文书
八一建军节演讲稿
2014/09/10 职场文书
乡镇党建工作汇报材料
2014/10/27 职场文书
交通处罚决定书
2015/06/24 职场文书