我需要在页面中为我的相应表格下载CSV文件。下载后我不需要做任何操作,只是他说导出和数据被下载到CSV文件中。 后端代码已准备就绪,但我该如何使用POST。
我已经提到了许多建议,并尝试使用window.open但POST似乎是一个问题。 最后尝试使用FORM创建,但现在问题是我得到了
"415 unsupported media type"
我的请求标题
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding gzip, deflate
Accept-Language en-US,en;q=0.5
Connection keep-alive
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0
Content-Length 112
Content-Type application/x-www-form-urlencoded
现在我理解的是要解决这个问题,我的内容类型应该设置为JSON,而在FORM POST中这是不可能的?
1)我们有更好的方法来下载文件(对于使用HTML和JS的单页APP)吗?没有图书馆请,简单的Javascript方式,在我的项目中无法获得图书馆的批准。
2)我如何解决上述问题,如果不是我的其他选择?
代码:
var form = document.createElement("form");
form.id = formId;
form.action = url;
form.method = method || "POST";
form.target = target || "_self";
if (data) {
for (var key in data) {
var input = document.createElement("textarea");
input.name = key;
input.value = typeof data[key] === "object" ? JSON.stringify(data[key]) : data[key];
form.appendChild(input);
}
}
form.style.display = 'none';
$('#' + containerId).append(form);
if (!self.isEmptyObject(data)) {
form.submit();
}
答案 0 :(得分:0)
从REST端点
需要修复包含以下代码
@Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_FORM_URLENCODED})
并将参数更改为
public javax.ws.rs.core.Response getExceptionDetailLogs(final @FormParam("param1") String param1,
final @FormParam("param2") String param2) throws Exception {
....
}
答案 1 :(得分:-1)
这里我做了一个例子,确保对所有人都有帮助:
<form name="myform" id="myform" method="post" enctype= "multipart/form-data">
<input name="uploadData" id="uploadData" type="file"/>
</form>
$("#uploadData").change(function (e) {
$('.loading').show();
var file_data = $('#uploadData').prop('files')[0];
var form_data = new FormData();
var csvhtml = '';
form_data.append('file', file_data);
$.ajax({
url: '{{path('bulk_request_update_upload')}}',
dataType: 'text',
cache: false,
contentType: false,
processData: false,
data: form_data,
type: 'post',
success: function (data) {
}
});
});