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 radio 联动效果
Mar 04 Javascript
让 JavaScript 轻松支持函数重载 (Part 2 - 实现)
Aug 04 Javascript
JavaScript是否可实现多线程  深入理解JavaScript定时机制
Dec 22 Javascript
JavaScript几种形式的树结构菜单
May 10 Javascript
JavaScript格式化数字的函数代码
Nov 30 Javascript
Extjs4中的分页应用结合前后台
Dec 13 Javascript
js 去除字符串第一位逗号的方法
Jun 07 Javascript
JavaScript实现文字与图片拖拽效果的方法
Feb 16 Javascript
jquery任意位置浮动固定层插件用法实例
May 29 Javascript
BootStrap Table前台和后台分页对JSON格式的要求
Jun 28 Javascript
jQuery制作全屏宽度固定高度轮播图(实例讲解)
Jul 08 jQuery
Promise扫盲贴
Jun 24 Javascript
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
缅甸的咖啡简史
2021/03/04 咖啡文化
destoon实现首页显示供应、企业、资讯条数的方法
2014/07/15 PHP
phpcms手机内容页面添加上一篇和下一篇
2015/06/05 PHP
Laravel中的Auth模块详解
2017/08/17 PHP
PHP 图片处理
2020/09/16 PHP
YUI的Tab切换实现代码
2010/04/11 Javascript
Date对象格式化函数代码
2010/07/17 Javascript
检测jQuery.js是否已加载的判断代码
2011/05/20 Javascript
JS实现金额转换(将输入的阿拉伯数字)转换成中文的实现代码
2013/09/30 Javascript
Node.js中安全调用系统命令的方法(避免注入安全漏洞)
2014/12/05 Javascript
JS模拟实现方法重载示例
2016/08/03 Javascript
node.js中的事件处理机制详解
2016/11/26 Javascript
JavaScript中闭包的详解
2017/04/01 Javascript
jQuery为某个div加入行样式
2017/06/09 jQuery
Webpack 服务器端代码打包的示例代码
2017/09/19 Javascript
vue项目打包之后背景样式丢失的解决方案
2019/01/17 Javascript
JavaScript中Dom操作实例详解
2019/07/08 Javascript
Vue3 中的数据侦测的实现
2019/10/09 Javascript
基于postman获取动态数据过程详解
2020/09/08 Javascript
JavaScript 实现下雪特效的示例代码
2020/09/09 Javascript
[49:21]完美世界DOTA2联赛循环赛 Ink Ice vs LBZS BO2第二场 11.05
2020/11/06 DOTA
python 多线程应用介绍
2012/12/19 Python
Python多线程同步Lock、RLock、Semaphore、Event实例
2014/11/21 Python
python实现爬虫统计学校BBS男女比例之数据处理(三)
2015/12/31 Python
python属于软件吗
2020/06/18 Python
解决pyinstaller 打包exe文件太大,用pipenv 缩小exe的问题
2020/07/13 Python
Eagle Eyes Optics鹰眼光学:高性能太阳镜
2018/12/07 全球购物
澳大利亚领先的男装零售连锁店:Lowes
2020/08/07 全球购物
MySQL面试题
2014/01/12 面试题
毕业生的自我评价
2013/12/30 职场文书
初级会计求职信范文
2014/02/15 职场文书
讲文明树新风公益广告宣传方案
2014/02/25 职场文书
机关道德讲堂实施方案
2014/03/15 职场文书
离婚协议书范文2015
2015/01/26 职场文书
2021年最新用于图像处理的Python库总结
2021/06/15 Python
关于vue-router-link选择样式设置
2022/04/30 Vue.js