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高级程序设计
Dec 29 Javascript
js查找父节点的简单方法
Jun 28 Javascript
JS读取cookies信息(记录用户名)
Jan 10 Javascript
常用Extjs工具:Extjs.util.Format使用方法
Mar 22 Javascript
jquery获取tr中控件值并操作tr实现思路
Mar 27 Javascript
ExtJS实现文件下载的方法实例
Nov 09 Javascript
js控制href内容的连接内容的变化示例
Apr 30 Javascript
js实现跨域的4种实用方法原理分析
Oct 29 Javascript
React简单介绍
May 24 Javascript
vue实现未登录跳转到登录页面的方法
Jul 17 Javascript
JS实现的雪花飘落特效示例
Dec 03 Javascript
axios封装与传参示例详解
Oct 18 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
PHP 小心urldecode引发的SQL注入漏洞
2011/10/27 PHP
php笔记之:文章中图片处理的使用
2013/04/26 PHP
ThinkPHP实现事务回滚示例代码
2014/06/23 PHP
PHP在线调试执行的实现方法(附demo源码)
2016/04/28 PHP
php中访问修饰符的知识点总结
2019/01/27 PHP
Js获取数组最大和最小值示例代码
2013/10/29 Javascript
JQuery简单实现锚点链接的平滑滚动
2015/05/03 Javascript
JavaScript仿支付宝密码输入框
2015/12/29 Javascript
浅谈JavaScript函数的四种存在形态
2016/06/08 Javascript
jquery+ajax实现直接提交表单实例分析
2016/06/17 Javascript
自定义require函数让浏览器按需加载Js文件
2016/11/24 Javascript
node.js利用mongoose获取mongodb数据的格式化问题详解
2017/10/06 Javascript
ionic3+Angular4实现接口请求及本地json文件读取示例
2017/10/11 Javascript
CentOS7中源码编译安装NodeJS的完整步骤
2018/10/13 NodeJs
详解Vue项目部署遇到的问题及解决方案
2019/01/11 Javascript
微信小程序扫描二维码获取信息实例详解
2019/05/07 Javascript
解决LayUI数据表格复选框不居中显示的问题
2019/09/25 Javascript
vue使用exif获取图片经纬度的示例代码
2020/12/11 Vue.js
vue实现防抖的实例代码
2021/01/11 Vue.js
[00:48]DOTA2国际邀请赛公开赛报名开始 扫码开启逐梦之旅
2018/06/06 DOTA
酷! 程序员用Python带你玩转冲顶大会
2018/01/17 Python
代码分析Python地图坐标转换
2018/02/08 Python
Python实现OpenCV的安装与使用示例
2018/03/30 Python
Django中自定义查询对象的具体使用
2019/10/13 Python
python如何停止递归
2020/09/09 Python
美国第二大连锁药店:Rite Aid
2019/04/03 全球购物
《称象》教学反思
2014/04/25 职场文书
关于孝道的演讲稿
2014/05/21 职场文书
2014年纠风工作总结
2014/12/08 职场文书
2014财务部年度工作总结
2014/12/08 职场文书
毕业生对母校寄语
2015/02/26 职场文书
电影复兴之路观后感
2015/06/02 职场文书
谢师宴家长致辞
2015/07/27 职场文书
志愿者工作心得体会
2016/01/15 职场文书
2019大学生预备党员转正思想汇报
2019/06/21 职场文书
缓存替换策略及应用(以Redis、InnoDB为例)
2021/07/25 Redis