使用ajax代替form表单向服务器同时提交多个数据和多个文件

使用ajax代替form表单向服务器同时提交多个数据和多个文件

JSP代码

一个form表单包含多个数据以及多个文件
在form表单中加入属性 enctype=“multipart/form-data” 表示此表单支持文件上传;
需正确引用jquery, jquery.form等js文件。

<!--表单内容-->
<form id="form-survey-record"  method="post" action="" enctype="multipart/form-data">
<div class="tab-pane active" id="tab-form">
<div class="row data-type">
<div class="col-md-2 title">标题</div>
<div class="col-md-10 data">
<input type="text" id="survey-record-name"
	name="surveyRecordTitle" class="form-control" placeholder="标题" value="">
</div>
<div class="col-md-2 title">类型</div>
<div class="col-md-4 data">
<select id="surveyrecord-type" name="surveyRecordType" class="form-control">
<option value="0">全部类型</option>
<option value="1">上级考评</option>
</select>
</div>
<div class="col-md-2 title rowHeight2x">备注</div>
<div class="col-md-10 data rowHeight2x">
<textarea class="form-control" id="survey-record-remarks" name="remarks" rows="3" 
		   placeholder="请输入..."></textarea>
</div>
<div class="col-md-2 title">题目文件</div>
<div  class="col-md-10 data">
<input type="file" name="surveyQuestionFile" id="survey-question-file"/>
</div>
<div class="col-md-2 title">选项文件</div>
<div class="col-md-10 data">
<input type="file" name="surveyOptionsFile" id="survey-options-file">                 
</div>
<div class="col-md-2 title"></div>
<div class="col-md-10 data text-center">
<button type="button" class="btn btn-primary ladda-button" onclick="saveSurveyRecord()"><span class="ladda-label">保存</span></button>
<button type="button" class="btn bg-default ladda-button" onclick="history.back(-1);">返回</button>
</div>
</div>
</div>
</form>
<!--表单内容/-->
		function saveSurveyRecord(){
		  //检查输入
		  ...
           var option = {
            url:"XXX/newSurveyRecord", 
            async:false, //是否异步?
            type : 'POST',
            dataType : 'json',
            headers : {"ClientCallMode" : "ajax"}, //添加请求头部
            beforeSend: function(){
                //在发送之前的逻辑
            },
            success:function (data) {
            //提交成功的逻辑
            }, error:function () {
            //失败的逻辑
            }, complete:function(){
            //不管成功失败都执行的逻辑(类似于finally)
            }   
        };
        $("#form-survey-record").ajaxSubmit(option);//form表单实际提交
        return false; //最好返回false,因为如果按钮类型是submit,则表单自己又会提交一次;返回false阻止表单再次提交
		}

#后端Action配置

<action name="newSurveyRecord" class="XX.SurveyRecordImportAction" method="newSurveyRecord">
<result name="success" type="json">
    <param name="root">dto</param>
</result>
</action>
public class SurveyRecordImportAction{
private String surveyRecordTitle;
private String surveyRecordType;
private String relateSurveyId = "";
private String remarks;
private  File surveyQuestionFile;	//接收上传的题目excle
private  File surveyOptionsFile;	//接收上传的选项excle
public String newSurveyRecord(){
	...
}
//getter setter
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用ajax提交form表单可以实现不刷新页面的数据交互,而ajax文件上传则可以实现异步上传文件。 首先,需要在前端页面引入jquery库和jquery.form插件。 然后,通过jqueryajax方法来提交表单数据,代码如下: ```javascript $(document).ready(function(){ $('#submitForm').click(function(){ var formData = new FormData($('#myForm')[0]); $.ajax({ url: 'submit.php', // 提交的url地址 type: 'POST', // 提交方式 data: formData, dataType: 'json', // 返回值类型 cache: false, // 是否缓存 processData: false, // 是否处理数据 contentType: false, // 是否设置内容类型 success: function(data){ // 成功回调函数 }, error: function(){ // 失败回调函数 } }); return false; }); }); ``` 其,`#submitForm`为提交按钮的id,`#myForm`为表单的id,`submit.php`为后台处理程序的url地址。 对于文件上传,需要将`processData`和`contentType`设置为`false`,并使用`FormData`对象来传递表单数据,如下所示: ```javascript $(document).ready(function(){ $('#submitForm').click(function(){ var formData = new FormData($('#myForm')[0]); $.ajax({ url: 'submit.php', // 提交的url地址 type: 'POST', // 提交方式 data: formData, dataType: 'json', // 返回值类型 cache: false, // 是否缓存 processData: false, // 是否处理数据 contentType: false, // 是否设置内容类型 success: function(data){ // 成功回调函数 }, error: function(){ // 失败回调函数 } }); return false; }); }); ``` 后台处理程序可以通过`$_FILES`变量来获取上传的文件信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值