这个表示 表单提交时 name=zs&age=18 相互拼接
"Content-Type": "application/x-www-form-urlencoded"
表单提交–可以绕过同源策略
form表单提交方式
无刷新页面提交表单
表单可实现无刷新页面提交,无需页面跳转,如下,通过一个隐藏的iframe实现,form表单的target设置为iframe的name名称,
form提交目标位当前页面iframe则不会刷新页面
<form action="/url.do" method="post" target="targetIfr">
<input type="text" name="name"/>
</form>
<iframe name="targetIfr" style="display:none"></iframe>
通过type=submit提交
一般表单提交通过type=submit实现,input type=“submit”,浏览器显示为button按钮,通过点击这个按钮提交表单数据跳转到/url.do
<form action="/url.do" method="post">
<input type="text" name="name"/>
<input type="submit" value="提交">
</form>
js提交form表单
js事件触发表单提交,通过button、链接等触发事件,js调用submit()方法提交表单数据,jquery通过submit()方法
<form id="form" action="/url.do" method="post">
<input type="text" name="name"/>
</form>
js: document.getElementById("form").submit();
jquery: $("#form").submit();
ajax异步提交表单数据
采用ajax异步方式,通过js获取form中所有input、select等组件的值,将这些值组成Json格式,通过异步的方式与服务器端进行交互,
一般将表单数据传送给服务器端,服务器端处理数据并返回结果信息等
<form id="form" method="post">
<input type="text" name="name" id="name"/>
</form>
var params = {"name", $("#name").val()}
$.ajax({
type: "POST",
url: "/url.do",
data: params,
dataType : "json",
success: function(respMsg){
}
});
页面无跳转
如果通过form表单提交请求服务端去下载文件,这时当前页面不会发生跳转,服务端返回void,通过response 去写文件数据,
页面会显示下载文件。
<form action="/url.do" method="post">
<input type="text" name="name"/>
<input type="submit" value="提交">
</form>
@RequestMapping(value = "/url")
public void exportFile(HttpServletRequest req, HttpServletResponse response, String rptId)
throws Exception {
OutputStream out = null;
try {
String rptName = "file";
String fileName = new String((rptName + excelAble.getFileSuffix()).getBytes("GBK"),
"8859_1");
response.reset();
response.setContentType("application/octec-stream");
response.setHeader("Content-disposition", "attachment; filename=" + fileName);
out = response.getOutputStream();
excelAble.exportFile(out);
} catch (Exception e) {
logger.error(e);
} finally {
if (out != null) {
out.close();
}
}
}
form表单上传文件
使用form表单进行上传文件需要为form添加enctype=“multipart/form-data” 属性,除此之外还需要将表单的提交方法改成post,
如下 method=“post”, input type的类型需要设置为file
<form action="/url.do" enctype="multipart/form-data" method="post">
<input type="file" name="name"/>
<input type="submit" value="提交">
</form>
二进制文件流下载文件
export const downpage = () => {
return new Promise(function (resolve) {
axios.request({
method: 'post',
url: "/ajax/admin/device/manager/exportExcel",
headers: {
"Content-Type": "application/x-www-form-urlencoded"
},
responseType: 'blob',
}).then(res=>{
const blob = new Blob([res.data], {
type: 'application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
})
const downloadElement = document.createElement('a')
const href = window.URL.createObjectURL(blob)
downloadElement.style.display = 'none'
downloadElement.href = href
resolve(href)
// downloadElement.download = row.fileName //下载后文件名
document.body.appendChild(downloadElement)
downloadElement.click() //点击下载
document.body.removeChild(downloadElement) //下载完成移除元素
window.URL.revokeObjectURL(href) //释放掉blob对象
})
});
};
参考:https://www.jianshu.com/p/13809952c593/
原生form 表单提交
参考:https://www.cnblogs.com/qlqwjy/p/8971207.html
<form ref="req_form" method="post" action="">
<input type="hidden" name="json" ref="req_json" value="" />
</form>
<el-button type="primary" icon="el-icon-download" @click="downOrder()">导出</el-button>
methods: {
downOrder() {
let form = {};
Object.assign(form, this.form); //对象属性拷贝到新的对象
form.limit = 1000;
var BASE_URL = url; // 下载的地址,请自行拼接
var jsonstr = JSON.stringify(form);
this.$refs["req_json"].value = jsonstr;
this.$refs["req_form"].action = BASE_URL;
this.$refs["req_form"].submit();
}
}
手动写form表单
this.exportExcel('/xx1/xx2/exportExcel', inputs);
exportExcel(url, data) // 导出数据到excel文件
{
const form = document.createElement('form');
form.style = "display:none;";
form.method = "post";
form.action = url;
const input = document.createElement('input');
input.type = 'hidden';
input.name = 'values';
input.value = Base64.encode(JSON.stringify(data));
form.appendChild(input);
$('body').append(form);
form.submit();
form.remove();
}
php下载:https://blog.csdn.net/weixin_39721924/article/details/111507508