一般情况下,我们提交form表单采用的是submit的方法,典型的场景如下。

    <form id="thisForm" method="post" action="thisAction">
<input type="text" name="text1" />
<input type="text" name="text2" />
<select name="select1">
<option value="xx">xxxx</option>
<option value="xx">xxxx</option>
</select> <input type="submit" id="thisSubmit" value="提交" />
</form>

用这种方法提交需要将整个页面刷新,转发到另一个页面。但是有时候我们只希望局部刷新,所以要用到ajax提交表单。这边介绍两种方法。

1.第一种方法比较简单,如下。

首先,要把提交按钮从submit改为button,其次引入jquery的包,然后就是最关键的了,填写如下代码。

    <form id="thisForm" method="post" action="">
<input type="text" name="text1" />
<input type="text" name="text2" />
<select name="select1">
<option value="xx">xxxx</option>
<option value="xx">xxxx</option>
</select> <button type="button" id="thisSubmit">提交</button>
</form>
$('#thisbuttion').click(function() {
$.ajax({
type : 'post',
url : 'thisAction',
data : $('#thisForm').serialize(),
dataType : 'html',
success : function(data) {
if (data > 0) {
alert("成功");
} else {
alert("失败")
}
}
});
});

这样就可以实现简单的ajax提交。

2.第二种方法是模拟form表单提交,需要用到一个jquery.form.js的插件,需要注意的是,这个插件比较古老了,新版的jquery可能会不兼容,所以还需要引入一个juery的降级包,jquery-migrate-1.2.1.min.js。

<!-- ajax form -->
<script type="text/javascript" src="./static/js/jquery.form.js"></script>
<script type="text/javascript" src="./static/js/jquery-migrate-1.2.1.min.js"></script>

然后就可以这样来写jquery代码实现提交了。

$(function() {
$("#thisButton").click(function() {
var ajax_option = {
url : "thisAction",
type : "post",
dataType : "html",
success : function(data) {
if (data == 1) {
alert("成功");
} else {
alert("失败")
}
goback();
}
}
$("#thisForm").ajaxSubmit(ajax_option);
});
});

两种方法的效果是一样的,不过如果提交表单的时候还有附件,则选用第二种方法。

3.如果提交表单的时候有附件,又不想选用第二种方法,还有第三种方法。

首先,需要在form表单加上 enctype='multipart/form-data'标识。

<form id="thisForm" enctype="multipart/form-data">
<input id="file" type="file" name="file"/>
<button id="thisButton" type="button">upload</button>
</form>

然后就可以用如下的代码来进行上传了。

$('#thisbuttion').click(function() {
$.ajax({
type : 'post',
url : 'thisAction',
cache: false,
data: new FormData($('#thisForm')[0]),
processData: false,
contentType: false,
dataType : 'html',
success : function(data) {
if (data > 0) {
alert("成功");
} else {
alert("失败")
}
}
});
});

ps:我们在form表单中最好不要用button来作为触发的按钮,而应该选用div,因为用button作为触发的按钮的时候,即便在代码中return false了,它还是会自动提交表单的。比如:

$("#button1").click(function(){

  return false;

})

在return false之后,它还是会提交表单,默认跳转道本来的页面,并且带上了参数。这对我们来说是一个不好的体验,所以我们建议用div来代替button.

jquery实现ajax提交表单的更多相关文章

  1. php使用jquery Form ajax 提交表单,并上传文件

    在html5中我们通过FormData就可以ajax上传文件数据,不过因为兼容问题.我们选用jquery.form.min.js来进行ajax的表单提交.   一.jquery.form.js下载地址 ...

  2. jquery实现ajax提交表单信息

    最近在思考优化项目,想自己扩展一个jquery自动获取表单中的数据进行ajax提交.本人没有完整性学习jquery,基本上是现学现找,有点困难. 主要是扩展和拼接json转对象 很简单,附上代码: ; ...

  3. 利用jquery进行ajax提交表单和附带的数据

    1.获取表单数据: $form.serialize() 2.附带数据:input[status]=1 3.构造url链接:url = $form.attr('action') + '?input[st ...

  4. jquery 通过ajax 提交表单

    1.需要引入以下两个js文件 <script src="Easyui/jquery-1.7.2.min.js"></script>    <scrip ...

  5. jquery实现ajax提交表单的方法总结

    方法一: 分别获取所需数据元素,DOM结构外层不用包form标签(适用于数据量少,数据元素分散于整个页面) $.ajax({ type: 'POST', url:'', data: { residen ...

  6. jQuery序列化Ajax提交表单

    var formData=$("form").serialize(); $.ajax({ type: "POST", url: "/front/EPt ...

  7. jquery实现ajax提交表单数据或json数据

  8. Jquery ajax提交表单几种方法

    在jquery中ajax提交表单有post与get方式,在使用get方式时我们可以直接使用ajax 序列化表单$('#表单ID').serialize();就行了,下面我来介绍两个提交表单数据的方法. ...

  9. Jquery ajax提交表单几种方法详解

    [导读] 在jquery中ajax提交表单有post与get方式,在使用get方式时我们可以直接使用ajax 序列化表单$( 表单ID) serialize();就行了,下面我来介绍两个提交表单数据的 ...

随机推荐

  1. java三大框架项目和Redis组合使用

    已知一个已有的Struts+Spring+Hibernate项目,以前使用MySQL数据库,现在想把Redis也整合进去.1. 相关Jar文件 下载并导入以下3个Jar文件: commons-pool ...

  2. apply和call的区别

    每一个javascript中的Function对象都有一个apply()方法和call()方法,他们的基本用法为: /*apply()方法*/ function.apply(thisObj[, arg ...

  3. C#编写的艺术字类方法

    代码如下: using System;using System.Collections.Generic;using System.ComponentModel;using System.Drawing ...

  4. [转载] 网络IO模型

    转载自http://blog.csdn.net/zhoudaxia/article/details/8974779 同步(synchronous) IO和异步(asynchronous) IO,阻塞( ...

  5. linux如何查看端口被谁占用

    1.查看端口是否被占用 [guosong@alice48 main]$ netstat -nlp|grep 6184 (Not all processes could be identified, n ...

  6. linux 运维常用工具表

    https://code.google.com/p/httperf/  ※测量Web服务器的性能 ./configure   make &&make install http://ww ...

  7. Ambari Auto Start(进程自动拉起)

    文章作者:luxianghao 文章来源:http://www.cnblogs.com/luxianghao/p/7886850.html  转载请注明,谢谢合作. 免责声明:文章内容仅代表个人观点, ...

  8. IIFE(立即执行函数表达式)

    我们经常会看到这样的写法: ;(fuction () { // do something })() 这就是一个简单的IIFE(立即执行函数表达式,immediately-invoked functio ...

  9. TFboy养成记 简单小程序(Variable & placeholder)

    学习参考周莫烦的视频. Variable:主要是用于训练变量之类的.比如我们经常使用的网络权重,偏置. 值得注意的是Variable在声明是必须赋予初始值.在训练过程中该值很可能会进行不断的加减操作变 ...

  10. 二叉树、栈、队列、链表的Java代码实现

    这是我的学习总结. 如有文章存在谬误,欢迎指出,有其他意见或者建议,也欢迎留言 二叉树链表 前序遍历:先访问根节点,然后访问左子树.右子树 中序遍历:先访问左子树,然后访问根节点.右子树 后序遍历:先 ...