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 相关文章推荐
事件委托与阻止冒泡阻止其父元素事件触发
Sep 02 Javascript
javascript计时器编写过程与实现方法
Feb 29 Javascript
只需五句话搞定JavaScript作用域(经典)
Jul 26 Javascript
如何处理JSON中的特殊字符
Nov 30 Javascript
Jquery根据浏览器窗口改变调整大小的方法
Feb 07 Javascript
Vue2.0实现1.0的搜索过滤器功能实例代码
Mar 20 Javascript
vue-router路由参数刷新消失的问题解决方法
Jun 17 Javascript
利用Javascript获取选择文本所在的句子详解
Dec 03 Javascript
微信小程序收藏功能的实现代码
Jun 12 Javascript
jquery判断滚动条距离顶部的距离方法
Sep 05 jQuery
基于javascript实现贪吃蛇经典小游戏
Apr 10 Javascript
基于elementUI竖向表格、和并列的案例
Oct 26 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求两个文件的相对路径
2013/06/20 PHP
PHP中spl_autoload_register()函数用法实例详解
2016/07/18 PHP
功能强大的php分页函数
2016/07/20 PHP
PHP使用栈解决约瑟夫环问题算法示例
2017/08/27 PHP
javascript 鼠标滚轮事件
2009/04/09 Javascript
腾讯的ip接口 方便获取当前用户的ip地理位置
2010/11/25 Javascript
js固定DIV高度,超出部分自动添加滚动条的简单方法
2013/07/10 Javascript
Document:getElementsByName()使用方法及示例
2013/10/28 Javascript
node.js中的fs.lchownSync方法使用说明
2014/12/16 Javascript
AngularJS基于factory创建自定义服务的方法详解
2017/05/25 Javascript
AngularJS自定义指令详解(有分页插件代码)
2017/06/12 Javascript
vue.js实现格式化时间并每秒更新显示功能示例
2018/07/07 Javascript
jQuery+PHP实现上传裁剪图片
2020/06/29 jQuery
JavaScript设计模式之观察者模式实例详解
2019/01/16 Javascript
Javascript读写cookie的实例源码
2019/03/16 Javascript
js实现删除li标签一行内容
2019/04/16 Javascript
Layui 解决表格异步调用后台分页的问题
2019/10/26 Javascript
vue3.0封装轮播图组件的步骤
2021/03/04 Vue.js
[01:12:08]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.24
2019/09/10 DOTA
Python实现的生产者、消费者问题完整实例
2018/05/30 Python
python实现字符串加密 生成唯一固定长度字符串
2019/03/22 Python
Django错误:TypeError at / 'bool' object is not callable解决
2019/08/16 Python
使用HTML5和CSS3表单验证功能
2017/05/05 HTML / CSS
Hudson Jeans官网:高级精制牛仔裤
2018/11/28 全球购物
新西兰便宜隐形眼镜购买网站:QUICKLENS New Zealand
2019/03/02 全球购物
北承题目(C++)
2012/05/16 面试题
linux面试题参考答案(1)
2016/01/22 面试题
如何反序的迭代一个序列?how do I iterate over a sequence in reverse order
2012/02/04 面试题
农药学硕士毕业生自荐信
2013/09/25 职场文书
店长岗位的工作内容
2013/11/12 职场文书
管事部库房保管员岗位职责
2014/02/21 职场文书
带香烟到学校抽的检讨书
2014/09/25 职场文书
学生旷课检讨书500字
2014/10/28 职场文书
单位考核鉴定意见
2015/06/05 职场文书
消费者理赔投诉书
2015/07/02 职场文书
Pytest中skip skipif跳过用例详解
2021/06/30 Python