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下拉框内容左右移动效果的具体实现
Jul 10 Javascript
js控制网页前进和后退的方法
Jun 08 Javascript
jQuery实现下拉加载功能实例代码
Apr 01 Javascript
原生js编写autoComplete插件
Apr 13 Javascript
JS Array创建及concat()split()slice()的使用方法
Jun 03 Javascript
js时间戳格式化成日期格式的多种方法介绍
Feb 16 Javascript
详解vue模拟加载更多功能(数据追加)
Jun 23 Javascript
ES7中利用Await减少回调嵌套的方法详解
Nov 01 Javascript
浅析node.js的模块加载机制
May 25 Javascript
node.js的Express服务器基本使用教程
Jan 09 Javascript
AI小程序之语音听写来了,十分钟掌握百度大脑语音听写全攻略
Mar 13 Javascript
怎么理解wx.navigateTo的events参数使用详情
May 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 addslashes和mysql_real_escape_string
2010/01/24 PHP
Mysql的Root密码忘记,查看或修改的解决方法(图文介绍)
2013/06/14 PHP
php出现web系统多域名登录失败的解决方法
2014/09/30 PHP
php中strtotime函数用法详解
2014/11/15 PHP
centos+php+coreseek+sphinx+mysql之一coreseek安装篇
2016/10/25 PHP
克隆javascript对象的三个方法小结
2011/01/12 Javascript
基于jquery点击自以外任意处,关闭自身的代码
2012/02/10 Javascript
poshytip 基于jquery的 插件 主要用于显示微博人的图像和鼠标提示等
2012/10/12 Javascript
jquery 关于event.target使用的几点说明介绍
2013/04/26 Javascript
js AppendChild与insertBefore用法详细对比
2013/12/16 Javascript
JavaScript中自定义事件用法分析
2014/12/23 Javascript
jquery遍历标签中自定义的属性方法
2016/09/17 Javascript
jQuery autoComplete插件两种使用方式及动态改变参数值的方法详解
2016/10/24 Javascript
JS与jQuery实现子窗口获取父窗口元素值的方法
2017/04/17 jQuery
BootStrap 导航条实例代码
2017/05/18 Javascript
Javascript ES6中对象类型Sets的介绍与使用详解
2017/07/17 Javascript
基于AngularJS的简单使用详解
2017/09/10 Javascript
vue通过接口直接下载java生成好的Excel表格案例
2020/10/26 Javascript
[01:07:20]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第二场 2月2日
2021/03/11 DOTA
Python使用MD5加密字符串示例
2014/08/22 Python
Python中list查询及所需时间计算操作示例
2018/06/21 Python
Python流程控制 while循环实现解析
2019/09/02 Python
Python的赋值、深拷贝与浅拷贝的区别详解
2020/02/12 Python
Python hashlib模块的使用示例
2020/10/09 Python
Python中的面向接口编程示例详解
2021/01/17 Python
详解python的xlwings库读写excel操作总结
2021/02/26 Python
html5 学习简单的拾色器
2010/09/03 HTML / CSS
意大利独特而优质的家居用品:Fazzini
2018/12/05 全球购物
世界上最好的足球商店:Unisport
2019/03/02 全球购物
入党转预备思想汇报
2014/01/07 职场文书
自动一体化专业求职信
2014/03/15 职场文书
2014年体育部工作总结
2014/11/13 职场文书
旅行社计调工作总结
2015/08/12 职场文书
护士业务学习心得体会
2016/01/25 职场文书
2016优秀大学生个人事迹材料范文
2016/03/01 职场文书
如何使用vue3打造一个物料库
2021/05/08 Vue.js