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 相关文章推荐
加载jQuery后$冲突的解决办法
Jul 09 Javascript
JavaScript判断对象是否为数组
Dec 22 Javascript
JS原型链 详解及示例代码
Sep 06 Javascript
DataTables+BootStrap组合使用Ajax来获取数据并且动态加载dom的方法(排序,过滤,分页等)
Nov 09 Javascript
javascript 网页进度条简单实例
Feb 22 Javascript
Angular2 之 路由与导航详细介绍
May 26 Javascript
微信小程序开发之改变data中数组或对象的某一属性值
Jul 05 Javascript
Vue 路由切换时页面内容没有重新加载的解决方法
Sep 01 Javascript
如何在 JavaScript 中更好地利用数组
Sep 27 Javascript
react项目如何使用iconfont的方法步骤
Mar 13 Javascript
antd vue table跨行合并单元格,并且自定义内容实例
Oct 28 Javascript
JS异步堆栈追踪之为什么await胜过Promise
Apr 28 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
用DBSQL类加快开发MySQL数据库程序的速度
2006/10/09 PHP
PHP常用的三种设计模式
2017/02/17 PHP
laravel dingo API返回自定义错误信息的实例
2019/09/29 PHP
laravel Task Scheduling(任务调度)在windows下的使用详解
2019/10/22 PHP
jquery高效反选具体实现
2013/05/05 Javascript
JavaScript实现瀑布流布局
2020/06/28 Javascript
js和jq使用submit方法无法提交表单的快速解决方法
2016/05/17 Javascript
JavaScript制作简单的框选图表
2017/05/15 Javascript
JavaScript中常见的八个陷阱总结
2017/06/28 Javascript
浅谈Vue组件单元测试究竟测试什么
2020/02/05 Javascript
解决vuecli3中img src 的引入问题
2020/08/04 Javascript
[46:47]2014 DOTA2国际邀请赛中国区预选赛 DT VS HGT
2014/05/22 DOTA
[09:43]DOTA2每周TOP10 精彩击杀集锦vol.5
2014/06/25 DOTA
Python和JavaScript间代码转换的4个工具
2016/02/22 Python
Python数据结构与算法之常见的分配排序法示例【桶排序与基数排序】
2017/12/15 Python
15行Python代码带你轻松理解令牌桶算法
2018/03/21 Python
Python生成MD5值的两种方法实例分析
2019/04/26 Python
浅谈Python爬虫原理与数据抓取
2020/07/21 Python
python从PDF中提取数据的示例
2020/10/30 Python
AC Lens:购买隐形眼镜
2017/02/26 全球购物
俄罗斯的精英皮具:Wittchen
2018/01/29 全球购物
Ray-Ban雷朋西班牙官网:全球领先的太阳眼镜品牌
2018/11/28 全球购物
产品工艺师的岗位职责
2013/11/15 职场文书
迷你西餐厅创业计划书范文
2013/12/31 职场文书
大学生职业生涯规划范文——找准自我,定位人生
2014/01/23 职场文书
家长评语和期望
2014/02/10 职场文书
社区工作感言
2014/02/21 职场文书
市场营销方案范文
2014/03/11 职场文书
竞聘演讲稿怎么写
2014/08/28 职场文书
幼儿园老师个人总结
2015/02/28 职场文书
2015年维修电工工作总结
2015/04/25 职场文书
致运动员的广播稿
2015/08/19 职场文书
2016廉洁从政心得体会
2016/01/19 职场文书
Jpa Specification如何实现and和or同时使用查询
2021/11/23 Java/Android
科学家测试在太空中培育人造肉,用于未来太空旅行
2022/04/29 数码科技
oracle delete误删除表数据后如何恢复
2022/06/28 Oracle