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 相关文章推荐
把字符串按照特定的字母顺序进行排序的js代码
Jan 28 Javascript
JS对文本框值的判断示例
Mar 10 Javascript
jQuery中die()方法用法实例
Jan 19 Javascript
jQuery实现列表的全选功能
Mar 18 Javascript
JQuery Mobile实现导航栏和页脚
Mar 09 Javascript
利用Jquery队列实现根据输入数量显示的动画
Sep 01 Javascript
Bootstrap响应式侧边栏改进版
Sep 17 Javascript
Bootstrap作品展示站点实战项目2
Oct 14 Javascript
jqGrid翻页时数据选中丢失问题的解决办法
Feb 13 Javascript
Angular.js通过自定义指令directive实现滑块滑动效果
Oct 13 Javascript
微信小程序switch开关选择器使用详解
Jan 31 Javascript
AngularJS与BootStrap模仿百度分页的示例代码
May 23 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 获取select下拉列表框的值
2010/05/08 PHP
PHP5中虚函数的实现方法分享
2011/04/20 PHP
php基于dom实现的图书xml格式数据示例
2017/02/03 PHP
thinkPHP+ajax实现统计页面pv浏览量的方法
2017/03/15 PHP
为jquery.ui.dialog 增加“自动记住关闭时的位置”的功能
2009/11/24 Javascript
前端开发必须知道的JS之原型和继承
2010/07/06 Javascript
javascript学习笔记(九)javascript中的原型(prototype)及原型链的继承方式
2011/04/12 Javascript
找出字符串中出现次数最多的字母和出现次数精简版
2012/11/07 Javascript
JQuery中serialize()用法实例分析
2015/02/06 Javascript
简单谈谈javascript中的变量、作用域和内存问题
2015/08/30 Javascript
Javascript技术难点之apply,call与this之间的衔接
2015/12/04 Javascript
jQuery实现的鼠标滑过弹出放大图片特效
2016/01/08 Javascript
整理JavaScript对DOM中各种类型的元素的常用操作
2016/05/05 Javascript
jQuery hover事件简单实现同时绑定2个方法
2016/06/07 Javascript
Angular.js中数组操作的方法教程
2017/07/31 Javascript
vue-router 实现导航守卫(路由卫士)的实例代码
2018/09/02 Javascript
3分钟读懂移动端rem使用方法(推荐)
2019/05/06 Javascript
Echarts地图添加引导线效果(labelLine)
2019/09/30 Javascript
vue通过接口直接下载java生成好的Excel表格案例
2020/10/26 Javascript
Python模拟登录12306的方法
2014/12/30 Python
Swift中的协议(protocol)学习教程
2016/07/08 Python
Python编程实战之Oracle数据库操作示例
2017/06/21 Python
Python的条件锁与事件共享详解
2019/09/12 Python
python能做什么 python的含义
2019/10/12 Python
html5拍照功能实现代码(htm5上传文件)
2013/12/11 HTML / CSS
html5版canvas自由拼图实例
2014/10/15 HTML / CSS
PHP两种查询函数array/row的区别
2013/06/03 面试题
顺丰快递Java软件工程师面试题
2015/07/31 面试题
高中生班主任评语
2014/04/25 职场文书
临床护理求职信
2014/04/26 职场文书
婚礼秀策划方案
2014/05/19 职场文书
绿色小区申报材料
2014/08/22 职场文书
国庆促销活动总结
2014/08/29 职场文书
小学生2015教师节演讲稿
2015/03/19 职场文书
2015年销售人员工作总结
2015/04/07 职场文书
使用vuex-persistedstate本地存储vuex
2022/04/29 Vue.js