jquery.form.js实现将form提交转为ajax方式提交的方法


Posted in Javascript onApril 07, 2015

本文实例讲述了jquery.form.js实现将form提交转为ajax方式提交的方法。分享给大家供大家参考。具体分析如下:

这个框架集合form提交、验证、上传的功能。
这个框架必须和jquery完整版结合,否则使用min则无效。
原理:利用js进行对form进行组装成ajax的url和data,原理还是用ajax来提交,其实这完全可以自己写,但是有这个框架可能会更简单。

一、最简单例子:

第一步:引用js

<!--这里的min是自己用js压缩工具对完整版进行的压缩
并不是真正的min,所以好使-->
<script type="text/javascript" src="js/jquery-1.7.min.js"></script>
<script type="text/javascript" src="js/jquery.form.js"></script>

第二步:页面写form

<form id="showDataForm" 
action="/024pm/f_shopUser.do?method=login" method="post">
 <input type="text" value="" name="name" maxlength="2"/>
 <input type="password" value="" name="password" maxlength="2"/>
 <input type="submit" value="提交"/>
</form>
<div id="output1" 
style="width:1000px;height:200px;background-color:#eee;">
</div>

第三步:写js调用jquery.form.js,对form表单进行ajax提交

$(document).ready(function() {
 var options = {
  target: '#output1',
  // 从服务传过来的数据显示在这个div内部
 也就是ajax局部刷新
  beforeSubmit: showRequest,
 // ajax提交之前的处理
  success:  showResponse
 // 处理之后的处理
 };
 $('#showDataForm').submit(function() {
  $(this).ajaxSubmit(options);
  return false; 
  //非常重要,如果是false,则表明是不跳转
  //在本页上处理,也就是ajax,如果是非false,则传统的form跳转。
 });
});
function showResponse(responseText, statusText, xhr, $form) {
 alert(xhr.responseText+"=="+$form.attr("method")+'status: ' + 
 statusText + '\n\nresponseText: \n' + responseText);
//xhr:说明你可以用ajax来自己再次发出请求
//$form:是那个form对象,是一个jquery对象
//statusText:状态,成功则为success
//responseText,服务器返回的是字符串(当然包括html,不包括json)
}
function showRequest(formData, jqForm, options) {
 //formData是数组,就是各个input的键值map数组
 //通过这个方法来进行处理出来拼凑出来字符串。
 //formData:拼凑出来的form字符串,比如name=hera&password,
 //其实就是各个表单中的input的键值对,
 //如果加上method=XXXX,那也就是相当于ajax内的data。
 var queryString = $.param(formData);
 alert(queryString+"======"+formData.length);
 for (var i=0; i < formData.length; i++) {
 alert(formData[i].value+"==============="+formData[i].name);
 }
 //jqForm,jquery form对象
 var formElement = jqForm[0];
 alert($(formElement).attr("method"));
 alert($(jqForm[0].name).attr("maxlength"));
 //非常重要,返回true则说明在提交ajax之前你验证
 //成功,则提交ajax form
 //如果验证不成功,则返回非true,不提交
 return true;
}

二、options对象内的值有哪些?

主要的有那么几个常用的属性:

var options = {
 target: '#output1', 
 data:{param1:"我自己的第一个额外的参数"},
//这个参数是指通过ajax来给服务器提交除了form内部input的参数
//在后台中使用String param1=req.getParameter("param1");获取。
 // dataType: null,
 dataType:'json',
//这个参数值的是服务器返回的数据类型,默认的是null
//也就是服务器可以默认返回字符串,然后将这些字符串放在target内部
//当然还有json、xml,其中最常用的便是null和json
//对于json的使用,我们会稍后讲解到
 beforeSubmit: showRequest,
 success:  successRes,
 type:'POST'
 //提交方式,默认是自己在form标签上指定的method
 //如果没有指定,则使用get。
 url:''
 //重新提交的url,即url可以在form中配置
 //也可以在这里配置。
};

三、如何解析服务器传递过来的json数据

我们知道,使用jquery提供的ajax方法,如果服务器传递回来的是json数据,是可以转换为js的json对象,然后可以通过json.xxx来获取相应的值。那么这个框架呢?
1)首先options参数中指定dataType:'json'
2)通过框架进行提交
3)服务器接收
4)服务器返回json
5)页面js接收json
关键是第五步,如何js接收json,是可以通过success: 指定的方法内部进行如下操作:

var options = {
 target: '#output1', 
 dataType:'json',
 beforeSubmit: showRequest,
 success:  successRes
//注意了,successRes方法看起来并没有有参数
//但是为何下面的方法就能有参数了呢,是可以这么传递的。
function successRes(jsonData){
 alert(jsonData.param1);
}

四、如何通过这个框架进行简单的验证呢?

说到验证,那肯定是在beforeSubmit的方法内部进行验证的,如何验证,因为这个方法已经将jqform对象,还有formData都传给你了,你可以拿这两个参数进行获取相应的input,然后进行自己的判定,如果判定成功,则提交。

function showRequest(formData, jqForm, options) {
 for (var i=0; i < formData.length; i++) {
 alert(formData[i].value+"========"+formData[i].name);
 if (!formData[i].value) {
  //验证是否填写完整
  alert('input有没有填写的选项');
  //如果验证不通过,则返回false
  return false;
 }
 }
 var formElement = jqForm[0];
 alert($(jqForm[0].name).attr("maxlength"));
 return true;
}

jquery.form.js文件点击此处本站下载。

希望本文所述对大家的jQuery程序设计有所帮助。

Javascript 相关文章推荐
一段实现页面上的图片延时加载的js代码
Feb 11 Javascript
Jquery操作下拉框(DropDownList)实现取值赋值
Aug 13 Javascript
javascript中RegExp保留小数点后几位数的方法分享
Aug 13 Javascript
js和php如何获取当前url的内容
Sep 22 Javascript
常见表单重复提交问题整理及解决方法
Nov 13 Javascript
JQuery判断HTML元素是否存在的两种解决方法
Dec 26 Javascript
js实现div的切换特效上一个下一个
Feb 11 Javascript
jQuery获取多种input值的简单实现方法
Jun 20 Javascript
在node.js中怎么屏蔽掉favicon.ico的请求
Mar 01 Javascript
微信小程序实现的3d轮播图效果示例【基于swiper组件】
Dec 11 Javascript
如何基于原生javaScript生成带图片的二维码
Nov 21 Javascript
Vue 如何使用props、emit实现自定义双向绑定的实现
Jun 05 Javascript
JavaScript中字符串分割函数split用法实例
Apr 07 #Javascript
JavaScript使用二分查找算法在数组中查找数据的方法
Apr 07 #Javascript
JavaScript给按钮绑定点击事件(onclick)的方法
Apr 07 #Javascript
JS 作用域与作用域链详解
Apr 07 #Javascript
JavaScript实现在页面间传值的方法
Apr 07 #Javascript
简易的投票系统以及js刷票思路和方法
Apr 07 #Javascript
使用 TypeScript 重新编写的 JavaScript 坦克大战游戏代码
Apr 07 #Javascript
You might like
曾在DC漫画界反派角色扮演的演员,谁才是你心目中的小丑之王?
2020/04/09 欧美动漫
PHP批量生成图片缩略图的方法
2015/06/18 PHP
WordPress中用于更新伪静态规则的PHP代码实例讲解
2015/12/18 PHP
简单理解PHP的面向对象编程方式
2016/05/17 PHP
extjs3 combobox取value和text案例详解
2013/02/06 Javascript
js跨域请求的5中解决方式
2015/07/02 Javascript
javascript实现C语言经典程序题
2015/11/29 Javascript
深入学习js瀑布流布局
2016/10/14 Javascript
jquery 判断div show的状态实例
2016/12/03 Javascript
js实现短信发送倒计时功能(正则验证)
2017/02/10 Javascript
JS Input里添加小图标的两种方法
2017/11/11 Javascript
vue.js 底部导航栏 一级路由显示 子路由不显示的解决方法
2018/03/09 Javascript
详解Ubuntu安装angular-cli遇到的坑
2018/09/08 Javascript
原生JS实现旋转轮播图+文字内容切换效果【附源码】
2018/09/29 Javascript
vue学习笔记之过滤器的基本使用方法实例分析
2020/02/01 Javascript
js实现简单贪吃蛇游戏
2020/05/15 Javascript
JavaScript实现滑块验证解锁
2021/01/07 Javascript
python getopt 参数处理小示例
2009/06/09 Python
Python下使用Scrapy爬取网页内容的实例
2018/05/21 Python
Flask之flask-session的具体使用
2018/07/26 Python
html5+svg学习指南之SVG基础知识
2014/12/17 HTML / CSS
TripAdvisor斯洛伐克:阅读评论、比较价格和酒店预订
2018/04/25 全球购物
Crabtree & Evelyn英国官网:瑰珀翠护手霜、香水、沐浴和身体护理
2018/04/26 全球购物
英国时尚优质的女装:Hope Fashion
2018/08/14 全球购物
美国翻新电子产品商店:The Store
2019/10/08 全球购物
璀璨的珍珠、密钉和个性化珠宝:Lily & Roo
2021/01/21 全球购物
绿化工程实施方案
2014/03/17 职场文书
党的群众路线教育学习材料
2014/05/12 职场文书
单方离婚协议书范本(2014版)
2014/09/30 职场文书
典型事迹材料范文
2014/12/29 职场文书
现货白银电话营销话术
2015/05/29 职场文书
化验室安全管理制度
2015/08/06 职场文书
新娘婚礼答谢词
2015/09/29 职场文书
小程序教您怎样你零成本推广获取数万用户的方法
2019/07/30 职场文书
Pygame Time时间控制的具体使用详解
2021/11/17 Python
CentOS 7安装mysql5.7使用XtraBackUp备份工具命令详解
2022/04/12 MySQL