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中令你抓狂的魔术变量
Nov 30 Javascript
初探jquery——表单应用范例
Feb 20 Javascript
最近项目写了一些js,水平有待提高
Jan 31 Javascript
JavaScript关于select的相关操作说明
Jan 13 Javascript
Firefox中beforeunload事件的实现缺陷浅析
May 03 Javascript
JavaScript中数组对象的那些自带方法介绍
Mar 12 Javascript
AngularJS中实现显示或隐藏动画效果的方式总结
Dec 31 Javascript
Vue.js动态组件解析
Sep 09 Javascript
详解react-webpack2-热模块替换[HMR]
Aug 03 Javascript
关于meta viewport中target-densitydpi属性详解(推荐)
Aug 18 Javascript
webpack3.0升级4.0的方法步骤
Apr 02 Javascript
Vue实现手机号、验证码登录(60s禁用倒计时)
Dec 19 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
使用PHP求两个文件的相对路径
2013/06/20 PHP
CI框架学习笔记(一) - 环境安装、基本术语和框架流程
2014/10/26 PHP
PHP多态代码实例
2015/06/26 PHP
thinkPHP框架自动填充原理与用法分析
2018/04/03 PHP
Tinymce+jQuery.Validation使用产生的BUG
2010/03/29 Javascript
表单切换,用回车键替换Tab健(不支持IE)
2011/07/20 Javascript
jquery中使用ajax获取远程页面信息
2011/11/13 Javascript
JS下拉框内容左右移动效果的具体实现
2013/07/10 Javascript
jQuery使用removeClass方法删除元素指定Class的方法
2015/03/26 Javascript
JS onkeypress兼容性写法详解
2016/04/27 Javascript
JavaScript实现点击文本自动定位到下拉框选中操作
2016/06/15 Javascript
AngularJS实现根据变量改变动态加载模板的方法
2016/11/04 Javascript
JS定时检测任务任务完成后执行下一步的解决办法
2016/12/22 Javascript
详解AngularJS通过ocLazyLoad实现动态(懒)加载模块和依赖
2017/03/01 Javascript
jQuery动态产生select option下拉列表
2017/03/15 Javascript
详解自定义ajax支持跨域组件封装
2018/02/08 Javascript
深入浅析Vue.js中 computed和methods不同机制
2018/03/22 Javascript
微信小程序后台持续定位功能使用详解
2019/08/23 Javascript
vue-resourc发起异步请求的方法
2020/02/11 Javascript
微信小程序实现文件预览
2020/10/22 Javascript
Pandas 数据框增、删、改、查、去重、抽样基本操作方法
2018/04/12 Python
Python数据结构之哈夫曼树定义与使用方法示例
2018/04/22 Python
python遍历文件夹,指定遍历深度与忽略目录的方法
2018/07/11 Python
Python爬虫框架Scrapy常用命令总结
2018/07/26 Python
使用python打印十行杨辉三角过程详解
2019/07/10 Python
4行Python代码生成图像验证码(2种)
2020/04/07 Python
远程Wi-Fi宠物监控相机:Petcube
2017/04/26 全球购物
PatPat香港:婴童服饰和亲子全家装在线购物
2020/09/27 全球购物
SQL Server的固定数据库角色都有哪些?对应的服务器权限有哪些?
2013/05/18 面试题
运动会通讯稿50字
2014/01/30 职场文书
作文评语大全
2014/04/23 职场文书
2015年大学生工作总结
2015/04/21 职场文书
离婚上诉状范文
2015/05/23 职场文书
安全教育培训心得体会
2016/01/15 职场文书
演讲稿之开卷有益
2019/08/07 职场文书
用Python将GIF动图分解成多张静态图片
2021/06/11 Python