官网: http://malsup.com/jquery/form/

jQuery Form插件是一个优秀的Ajax表单插件,可以非常容易地、无侵入地升级HTML表单以支持Ajax。jQuery Form有两个核心方法 -- ajaxForm() 和 ajaxSubmit(), 它们集合了从控制表单元素到决定如何管理提交进程的功能。另外,插件还包括其他的一些方法: formToArray()、formSerialize()、fieldSerialize()、fieldValue()、clearForm()、clearFields() 和 resetForm()等。

1. 核心方法 -- ajaxForm() 和 ajaxSubmit()

首先要引用两个脚本文件:

<script src="../../js/jquery.js" type="text/javascript"></script>
<script src="../../js/jquery.form.js" type="text/javascript"></script>

然后,在脚本中用下面两段代码中的任意一个:

$(document).ready(function() {
$('#myForm').ajaxForm(function() {
$('#output1').html("提交成功!欢迎下次再来!").show();
});
});
$(document).ready(function() {
$('#myForm').submit(function() {
$(this).ajaxSubmit(function() {
$('#output1').html("提交成功!欢迎下次再来!").show();
});
return false; //阻止表单默认提交
});
});

通过Form插件的两个核心方法,都可以在不修改表单的HTML代码结构的情况下,轻易地将表单的提交方式升级为Ajax提交。

注意:ajaxSubmit()时,需要加入return false行阻止表单默认提交,否则表单将提交再次。

一直不知道ajaxForm()与ajaxSubmit()方法具体有何差异,应用时应当注意什么,有知道的朋友希望告诉我。

2. ajaxForm() 和 ajaxSubmit() 参数

ajaxForm() 和 ajaxSubmit()都能接受0个或1个参数,当为单个参数时,该参数既可以是一个回调函数,也可以是一个options对象,上面的例子就是回调函数,下面介绍options对象,使得它们对表单拥有更多的控制权。

$(document).ready(function() {
var options = {
target: '#output1', // 用服务器返回的数据 更新 id为output1的内容.
beforeSubmit: showRequest, // 提交前
success: showResponse, // 提交后
//另外的一些属性:
//url: url // 默认是form的action,如果写的话,会覆盖from的action.
//type: type // 默认是form的method,如果写的话,会覆盖from的method.('get' or 'post').
//dataType: null // 'xml', 'script', or 'json' (接受服务端返回的类型.)
//clearForm: true // 成功提交后,清除所有的表单元素的值.
resetForm: true // 成功提交后,重置所有的表单元素的值.
//由于某种原因,提交陷入无限等待之中,timeout参数就是用来限制请求的时间,
//当请求大于3秒后,跳出请求.
//timeout: 3000
}; //'ajaxForm' 方式的表单 .
$('#myForm').ajaxForm(options);
//或者 'ajaxSubmit' 方式的提交.
//$('#myForm').submit(function() {
// $(this).ajaxSubmit(options);
// return false; //来阻止浏览器提交.
//});
}); // 提交前
function showRequest(formData, jqForm, options) {
// formdata是数组对象,在这里,我们使用$.param()方法把他转化为字符串.
var queryString = $.param(formData); //组装数据,插件会自动提交数据
alert(queryString); //类似 : name=1&add=2
return true;
} // 提交后
function showResponse(responseText, statusText , xhr , $form) {
alert('状态: ' + statusText + '\n 返回的内容是: \n' + responseText);
}

表单提交之前进行验证:  beforeSubmit会在表单提交前被调用,如果beforeSubmit返回false,则会阻止表单提交

3. 处理服务器返回类型

下面是是个完整示范,分别解析从服务器返回html/json/xml数据。

前台demo8.html:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script src="../../js/jquery.js" type="text/javascript"></script>
<script src="../../js/jquery.form.js" type="text/javascript"></script>
<script type="text/javascript">
// json
$(document).ready(function() {
$('#myForm').ajaxForm({
// 声明 服务器返回数据的类型.
dataType: 'json',
success: processJson
});
}); function processJson(data) {
// 'data'是一个json对象,从服务器返回的.
$('#jsonOut').html(data.name + " "+data.address + " "+data.comment);
} // xml
$(document).ready(function() {
$('#xmlForm').ajaxForm({
// 声明 服务器返回数据的类型.
dataType: 'xml',
success: processXml
});
}); function processXml(responseXML) {
// 'responseXML' 是一个XML的文档 ,从服务器返回的.
var name = $('name', responseXML).text();
var address = $('address', responseXML).text();
var comment = $('comment', responseXML).text();
$('#xmlOut').html(name + " "+address + " "+comment);
} // html
$(document).ready(function() {
$('#htmlForm').ajaxForm({
// 用服务器返回的数据 更新 id为 htmlcssrain 的内容.
target: '#htmlOut',
success: function() {
$('#htmlOut').fadeIn('slow');
}
});
});
</script>
</head>
<body>
<h3> Demo 8 : form插件的使用--dataType的其他方式. </h3>
<!-- demo1 json-->
<h4>json方式返回</h4>
<form id="myForm" action="json.jsp" method="post">
名称:
<input type="text" name="name" id="name" />
<br/>
地址:
<input type="text" name="address" id="address"/>
<br/>
自我介绍:
<textarea name="comment" id="comment" ></textarea>
<br/>
<input type="submit" id="test" value="json方式返回" />
<br/>
<div id="jsonOut" ></div>
</form>
<!-- demo2 xml-->
<h4>xml方式返回</h4>
<form id="xmlForm" action="xml.jsp" method="post">
名称:
<input type="text" name="xmlname" id="xmlname" />
<br/>
地址:
<input type="text" name="xmladdress" id="xmladdress"/>
<br/>
自我介绍:
<textarea name="xmlcomment" id="xmlcomment" ></textarea>
<br/>
<input type="submit" id="xmltest" value="xml方式返回" />
<br/>
<div id="xmlOut" ></div>
</form>
<!-- demo3 html-->
<h4>html方式返回</h4>
<form id="htmlForm" action="html.jsp" method="post">
名称:
<input type="text" name="htmlname" id="htmlname" />
<br/>
地址:
<input type="text" name="htmladdress" id="htmladdress"/>
<br/>
自我介绍:
<textarea name="htmlcomment" id="htmlcomment" ></textarea>
<br/>
<input type="submit" id="htmltest" value="html方式返回" />
<br/>
<div id="htmlOut" ></div>
</form>
</body>
</html>

后台对应的三个JSP页面代码:

json.jsp

<%@ page contentType="text/html; charset=UTF-8"%><%
String name = request.getParameter("name");
String address = request.getParameter("address");
String comment = request.getParameter("comment"); System.out.println("后台json.jsp收到:" + name); out.println("{ \"name\" : \""+name+"\" , \"address\" : \""+address+"\", \"comment\" : \""+comment+"\"}");
%>

xml.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%
// XML 格式返回数据,需要注意不要留有换行符等(最上面)
String name = request.getParameter("xmlname");
String address = request.getParameter("xmladdress");
String comment = request.getParameter("xmlcomment"); System.out.println("后台xml.jsp收到:" + name); response.setContentType("text/xml");
out.println("<?xml version='1.0' encoding='UTF-8'?>");
out.println("<root>");
out.println("<name>"+name+"</name>");
out.println("<address>"+address+"</address>");
out.println("<comment>"+comment+"</comment>");
out.println("</root>");
%>

html.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%
// XML 格式返回数据,需要注意不要留有换行符等(最上面)
String name = request.getParameter("htmlname");
String address = request.getParameter("htmladdress");
String comment = request.getParameter("htmlcomment"); System.out.println("后台html.jsp收到:" + name); response.setContentType("text/html; charset=utf-8");
out.println("<div style='background-color:#ffa; padding:20px'>" + name + "," + address + "," + comment + "</div>");
%>

jQuery学习笔记(jquery.form插件)的更多相关文章

  1. jquery学习笔记---jquery插件开发

    http://www.cnblogs.com/Wayou/p/jquery_plugin_tutorial.html jquery插件开发:http://www.cnblogs.com/damonla ...

  2. JQuery学习笔记---jquery对象和DOM对象的关系

    1.DOM(Document  Object Model,文档对象模型).DOM树 { html (head&&body),  head(meta && title) ...

  3. jquery学习笔记----jquery相关的文档

    http://tool.oschina.net/apidocs/apidoc?api=jquery http://www.w3school.com.cn/jquery/jquery_ref_event ...

  4. JQuery学习笔记——JQuery基础

    #,JQuery避免名称冲突的方法 var jq = jQuery.noConfilct(); jq.ready( function(){     jq("p").hidden() ...

  5. jQuery 学习笔记(jQuery: The Return Flight)

    第一课. ajax:$.ajax(url[, settings]) 练习代码: $(document).ready(function() { $("#tour").on(" ...

  6. jQuery学习笔记——jQuery常规选择器

    一.简单选择器在使用 jQuery 选择器时,我们首先必须使用“$()”函数来包装我们的 CSS 规则.而CSS 规则作为参数传递到 jQuery 对象内部后,再返回包含页面中对应元素的 jQuery ...

  7. jQuery学习笔记——jQuery基础核心

    代码风格 在jQuery程序中,不管是页面元素的选择.内置的功能函数,都是美元符号“$”来起始的.而这个“$”就是jQuery当中最重要且独有的对象:jQuery对象,所以我们在页面元素选择或执行功能 ...

  8. jQuery 学习笔记

    jQuery 学习笔记   一.jQuery概述    宗旨: Write Less, Do More.    基础知识:        1.符号$代替document.getElementById( ...

  9. jQuery学习笔记 - 基础知识扫盲入门篇

    jQuery学习笔记 - 基础知识扫盲入门篇 2013-06-16 18:42 by 全新时代, 11 阅读, 0 评论, 收藏, 编辑 1.为什么要使用jQuery? 提供了强大的功能函数解决浏览器 ...

  10. jQuery学习笔记之概念(1)

    jQuery学习笔记之概念(1) ----------------------学习目录-------------------- 1.概念 2.特点 3.选择器 4.DOM操作 5.事件 6.jQuer ...

随机推荐

  1. Java多线程之锁优化策略

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6561264.html  锁的优化策略 编码过程中可采取的锁优化的思路有以下几种: 1:减少锁持有时间 例如:对 ...

  2. emplace_back() 和 push_back 的区别(转)

    在引入右值引用,转移构造函数,转移复制运算符之前,通常使用push_back()向容器中加入一个右值元素(临时对象)的时候,首先会调用构造函数构造这个临时对象,然后需要调用拷贝构造函数将这个临时对象放 ...

  3. POJ 2186 强联通分量

    点击打开链接 题意:牛A喜欢牛B,若牛B喜欢牛C,则牛A喜欢牛C,问最后多少牛被其它全部牛喜欢 思路:用强联通分量进行缩点,最后形成的图是有向无环图DAG.而拓扑序的值为DAG的长度,则加一,可是最后 ...

  4. Axure 富文本框

    百度网盘:http://pan.baidu.com/s/1c1ZjUPq

  5. 在瀚海上的ID

    为了远去的记忆

  6. https知识了解与javaweb中如何使用https

    1)      https是什么? https是一种协议,在说https之前我们先说一下什么是http,http就是我们平时浏览网页时使用的一种协议,https协议传输的数据都是未加密的,也就是明文的 ...

  7. PendingIntent传递数据注意参数RequestCode和Flag

    数据发送方: public static void notify(Context context, TxrjMessage msg) {     NotificationManager notifiM ...

  8. 输出控制台信息到日志 并 通过cronolog对tomcat进行日志切分

    windows下tomcat默认并不会把控制台输出的信息都记录进日志文件.但是在生产环境中,出现问题时,控制台的日志输出是无法查据的,因此需要将日志记录下来. 解决方法: 输出日志到文件 修改tomc ...

  9. thunderbird中如何设置QQ邮箱

    thunderbird和其他客户端设置是类似的. 我们发现您尝试设置POP3/SMTP服务,但设置未成功. 您可以检查以下的细节来解决:  您是否在邮箱中开启了这项服务,如果尚未开启,请您在[邮箱设置 ...

  10. Safari导入书签

    1.打开Safari 这边safari会自动带出一些关联的浏览器,但如果你要导入的浏览器不在这里的话,就需要看第二步. 2.比如,这里我要从QQ浏览器导入,先打开QQ浏览器. 其他浏览器都类似,找到书 ...