ajax使用formdata 提交excel文件表单到rails解析
.modal-body
.container-fluid
.row
.col-md-12
1.下载模板文件
= link_to '模板文件'
.row
.col-md-12
= form_tag '', :id => "my-form" do
.input-group
%span.input-group-btn
%button#fake-file-button-browse.btn.btn-default{:type => "button"}
%span.glyphicon.glyphicon-file
= file_field_tag :category_file, :id => "files-input-upload", :style => "display:none"
%input#fake-file-input-name.form-control{:disabled => "disabled", :type => "text"}/
%span.input-group-btn
%button#fake-file-button-upload.btn.btn-default{:disabled => "disabled", :type => "button"}
%span.glyphicon.glyphicon-upload
使用formdata得到完整表单,将formdata作为data值传递给后台,就如同点击submit提交数据一样。注意此处的url和type对应的值不能直接写到表单里面,而应写在ajax的配置参数中
$('#fake-file-button-upload').click(function() {
var form = new FormData(document.getElementById('my-form'));
$.ajax({
url: "/tax_categories/get_category",
type: "POST",
data: form,
dataType: "json",
processData: false, // 不处理数据
contentType: false, //要加
success: function(data) {
console.log(data);
if (data.result == "error") {
alert(data.result);
} else {
console.log("save success");
window.location = "/tax_categories"
}
}
});
});
使用creek解析xml
require 'creek'
def get_category
flag = true
begin
file = params[:category_file]
creek = Creek::Book.new file.path
sheet = creek.sheets[0]
sheet.rows.each do |row|
puts row
end
rescue
flag = false
end
if flag
respond_to do |f|
f.json {
render :json => {:result => "success"}.to_json
}
end
else
respond_to do |f|
f.json {
render :json => {:result => "error"}.to_json
}
end
end
end
此处还有个比较二的问题,是发生了302重定向,刚开始controller中的代码是如下,在解析成功后想直接跳转,可是在ajax的请求下,产生的是302重定向,在浏览器中并不会显示跳转。所以采用在js中location定位到新的页面
if flag
redirect_to tax_categories_url
else
respond_to do |f|
f.json {
render :json => {:result => "error"}.to_json
}
end
end
ajax使用formdata 提交excel文件表单到rails解析的更多相关文章
- Ajax 使用formdata 实现 无刷新表单上传
FormData对象的作用就类似于这里的serialize()方法,不过FormData是浏览器原生的,且支持二进制文件 1.这里实现一个无刷新上传图片,成功后页面显示 点击button 触发隐藏的 ...
- Ajax发送FormData对象封装的表单数据
前端页面: <!doctype html> <html lang="en"> <head> <meta charset="UTF ...
- Java使用HTTP编程模拟多参数多文件表单信息的请求与处理
本文目的是提供Java环境下模拟浏览器页面提交多参数多文件表单请求以及解析请求的Demo代码.这里用Java提供的HttpURLConnection类做HTTP请求,再原始点可以直接使用socket. ...
- SpringMVC 完美解决PUT请求参数绑定问题(普通表单和文件表单)
一 解决方案 修改web.xml配置文件 将下面配置拷贝进去(在原有的web-app节点里面配置 其它配置不变) <!-- 处理PUT提交参数(只对基础表单生效) --> <filt ...
- Jquery serialize()提交多个表单数据
ajax提交多个表单数据: 先把不同的表单分别用serialize()函数,然后把序列化后的数据用+拼接提交给后台,具体例子如下 var data1 = $('#form1).serialize(); ...
- javaWeb中一个按钮提交两个表单
一个按钮提交两个表单,有时候会用到,一般会很容易想到使用 onclick="document.form1.submit();document.form2.submit();" 的方 ...
- 直接提交一个form表单后台返回一个新页面通过target属性可以放到iframe当中
问题描述: 我想提交一个form表单后台直接返回一个新页面,但是当前页面还不想被替换掉: 解决方案: 在页面中添加一个iframe将form表单的target属性设置为iframe的id这样的话返回的 ...
- Form表单 JSON Content-type解析
Form表单 JSON Content-type解析 1 表单Form概述 在Form表单中,参数一般有: action 表单提交的url method 提交方式:post get name 表单的属 ...
- HTML5新表单新功能解析
HTML5新增了很多属性功能.但是有兼容性问题,因为这些表单功能新增的.我这里做了一个简单的练习,方便参考.如果完全兼容的话,那我们写表单的时候就省了很多代码以及各种判断. <!DOCTYPE ...
随机推荐
- 一键保存网页为PDF_V1.2
福利来了,“一键保存网页为PDF”发布以来最给力的功能来了: 1.支持大部分浏览器了(添加书签方式),测试IE8\IE9.谷歌.火狐可用: 2.转换组件“ephtmltopdf”无水印了,不用注册账号 ...
- SecureCRT中的vim出现1H特殊字符
问题原因:由于采用了UTF_8编码方式导致的. 解决方法:把字符编码改为:GB18030即可.如图:
- 谈谈 epmd
在<Erlang/OTP 并发编程实战>中,对 epmd 有如下描述: epmd 代表 Erlang 端口映射守护进程(Erlang Port Mapper Daemon). 每启动一个 ...
- 【转】Android自动化测试(UiAutomator)简要介绍
一.一个BUG引发的问题 如果研发过程中有一个BUG:“不断的切换手机语言出现花屏现象”.这个问题我们如何验证呢?我想,最好的方式应该是自动化测试. 那么,自动化测试可以完成哪些任务呢? ...
- 我的第二个java程序 循环
public class Test {//类 public Test (int num){//构造方法,和类同名,无返回值,接收传参并定义传参的类型,大小写敏感 int x = 10;//局部变量,定 ...
- HDU2844 Coins 多重背包
Coins Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- aspx.cs方法设置webmenthod特性接收ajax请求
cs代码: public partial class TelerikWebMethod : BasePage//System.Web.UI.Page { protected void Page_Loa ...
- cocos2d-x 游戏优化方案
优化的方案: 引擎底层优化.纹理优化.渲染优化.资源缓存.内存优化. 纹理优化: cocos2d-x 底层是OPenGL ES实现的. 对于图案片载入的内存是2的幂次方. 使用的图片是100*128 ...
- [网络通信] OSI七层模型思维导图
ISO:国际标准化组织:OSI:开放系统互联 (部分描述不准确和不详细)
- IOS开发复习笔记(4)-TableView
总结几个TableView常用的代码 1.初始化方面 static string CellIndetifier=@"cellIndetifier"; -(NSInteger)num ...