项目总结15:JavaScript模拟表单提交(实现window.location.href-POST提交数据效果)
JavaScript模拟表单提交(实现window.location.href-POST提交数据效果)
前沿
1-在具体项目开发中,用window.location.href方法下载文件,因window.location.href默认GET方法,如果跟在URL后面的参数过长,则会请求失败;
2-而window.location.href并没有POST方法可用,
3-只能通过JavaScript模拟表单提交,从而实现window.location.href-POST提交数据下效果,以下提供两种方法
正文
方法1:DOM方法
1-源码示例
function downloadInfoToExcel(){
var utl = "XXXX";
var idsStr = "xxxx"; document.write("<form action='"+url+"' method='post' name='form' content-type= 'application/json' style='display:none'>");
document.write("<input type='hidden' name='idsStr' value='"+idsStr+"'>");
document.write("</form>");
document.form.submit();
}
2-关于document.write()方法
1.因为 document.write 写入文档流,在关闭(已加载)的文档上调用 document.write 会自动调用 document.open,这将清除该文档。
2.向一个已经加载,并且没有调用过document.open()的文档写入数据时,会自动完成调用document.open()的操作。一旦完成了数据写入,系统要求调用document.close(),以告诉浏览器页面已经加载完毕。写入的数据会被解析到文档结构模型里。在上面的例子里,元素h1会成为文档中的一个节点。
3.如果document.write()被直接嵌入到HTML主体代码中,那么它将不会调用document.open()。
4.连续连个document.write()也不会相互覆盖 是因为document.write("A")结束后,默认是不会调用document.close()的,所以第二个document.write("B")不会覆盖前一个write的内容,而是进行追加。
5.我们可以手动调用document.close()方法,关闭由document.open()方法创建的文档流,但是我们无法关闭系统创建的文档流
方法2:Jquery方法
1-源码示例
function downloadInfoToExcel(){
var utl = "XXXX";
var idsStr = "xxxx"; var $form=$(document.createElement('form')).css({'display':'none'}).attr("method","POST").attr("action",url);
var $input=$(document.createElement('input')).attr('type','hidden').attr('name','idsStr').val(idsStr);
$form.append($input);
$("body").append($form);
$form.submit();
}
参考资料
1-https://blog.csdn.net/Jzsn_Paul/article/details/80025683
2-https://blog.csdn.net/mf_mofy/article/details/78997002
项目总结15:JavaScript模拟表单提交(实现window.location.href-POST提交数据效果)的更多相关文章
- JavaScript在IE6下超级链接window.location.href不跳转的bug 及 解决方案
今天遇到个很诡异的问题,就是<a href="javascript:void(0);" onclick="window.location.href=url" ...
- JavaScript模拟表单(带数组的复杂数据结构)提交
function test(){ var typeArray = new Array(); typeArray.push("mm"); typeArray.pus ...
- window.location.href方式提交json数据
${ctx}/vehicleFlow/to_vehflow_detail.do?strJson="+encodeURIComponent(json)
- 遇到问题-----JS中设置window.location.href跳转无效(在a标签里或这form表单里)
问题情况 JS中设置window.location.href跳转无效 代码如下: ? 1 2 3 4 5 6 7 8 <script type="text/javascript&quo ...
- 由于想要实现下载的文件可以进行选择,而不是通过<a>标签写死下载文件的参数,所以一直想要使用JFinal结合ajax实现文件下载,但是ajax实现的文件下载并不能触发浏览器的下载文件弹出框,这里通过模拟表单提交实现同样的效果。
由于想要实现下载的文件可以进行选择,而不是通过<a>标签写死下载文件的参数,所以一直想要使用JFinal结合ajax实现文件下载(这样的话ajax可以传递不同的参数),但是ajax实现的文 ...
- CURL模拟表单post提交及相关常用参数的使用(包括提交表单同时上传文件)
转载自:https://blog.csdn.net/freedomwjx/article/details/43278157 (注:在curl前面加上time如time curl xxx,可以在最后显示 ...
- 利用HttpWebRequest模拟表单提交 JQuery 的一个轻量级 Guid 字符串拓展插件. 轻量级Config文件AppSettings节点编辑帮助类
利用HttpWebRequest模拟表单提交 1 using System; 2 using System.Collections.Specialized; 3 using System.IO; ...
- 使用axios模拟表单提交
1.需求背景 最近在实验室写一个Spring前后端分离的项目,项目中使用Spring Security组件实现系统的认证和授权,当Security的认证模式设置为FormLogin时(如下代码),前端 ...
- 表单提交---前端页面模拟表单提交(form)
有些时候我们的前端页面总没有<form></form>表单,但是具体的业务时,我们又必须用表单提交才能达到我们想要的结果,LZ最近做了一些关于导出的一些功能,需要调用浏览器默认 ...
随机推荐
- day33-常见内置模块二(hashlib、shutil、configparse)
一.hashlib算法介绍 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 1.什么是摘要算法呢? 摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一 ...
- UI5-学习篇-1-Eclipse开发工具及环境搭建
最近研究SAP-UI5好几个月了,将相关学习经历及问题点做个记录. 1.先了解学习资料相关站点 SAP官网:https://www.sap.com/china/index.html SAP开发工具:h ...
- eclipse,import,导入项目显示红色叹号
[场景]eclipse导入项目后,该项目出现红色叹号.打开类文件,会有无数的“The type ... cannot be resolved.”等稀奇古怪的编译错误. [分析]当前eclipse环境中 ...
- linux 不同服务器之间复制文件
----------------------拷贝文件夹---------------------------------------------- 把当前文件夹tempA拷贝到 目标服务器10.127 ...
- R-CNN 学习记录
CNN是一个运用卷积神经网络进行图片分类的开山之作.RCNN是第一个把图片分类和目标检测连接起来的作品. RCNN主要解决的问题是: 1.怎样用深度神经网络进行目标定位:2.怎样用小批量的标注数据来训 ...
- UIPanGestureRecognizer translateInView, locationInView
假设在panGesture的回调事件里已经拿到了panGestureRecognizer CGPoint point = [panGestureRecognizer locationInView:se ...
- jquery接触初级----jquery 对象和Dom对象
1. DOM 对象,每一份DOm对象(Document Object model)都可以表示成一棵树,一个基本的网页如下: <!DOCTYPE html> <html lang=&q ...
- avalon2学习教程 03数据填充
数据填充是一个模版最基础的功能,直接从JSON(vm)取出数据,放到适当的位置上.在静态模板中,不区分文本与HTML,只看你的字符串是否有< >来决定生成文本节点与元素节点.但MVVM中, ...
- angularjs 做不到实时脏值查询
angularjs 做不到脏值查询 ,数据请求过来,不操作其他按钮,请求的值就是展示不出来:(相当于,只有手动触发,angularjs内部才会把脏值查询出来): 解决办法:在请求过来的值旁边加上$sc ...
- Java学习07 (第一遍) - Spring MVC
跳过Struts2,直接学习Spring MVC MVC,自己画的 属性(Property/Attribute),事件(Event),方法(method/procedure),函数(Function) ...