js post 方式 新开窗口

js中一般新打开窗口很简单直接window.open(url);就可以了,

但是由于我希望传递参数到服务端,而且参数看起来很长一串,而且get方式的提交参数长度是有限制的,因此我有以下需求:

1,js中实现post提交

2,返回的页面在新窗口显示

首先我是这么做的:

 $.ajax({
                     type: "POST",
                     url: ‘${contextPath}/analyse/detail.do‘,
                     data: {carNum :carNum,ids:refIds},
                     success: function(str_response) {
                        var obj = window.open("about:blank");
                        obj.document.write(str_response);
                     }
                 }); 

通过jQuery ajax提交,返回的数据写在新的页面中,但是由于浏览器的会拦截自动弹出的窗口,这样还需用户自己解除拦截,用户体验很差,

然后我又通过模拟form表单的提交来实现

function post(URL, PARAMS) {
            var temp_form = document.createElement("form");
            temp_form .action = URL;
            temp_form .target = "_blank";
            temp_form .method = "post";
            temp_form .style.display = "none";
            for (var x in PARAMS) {
                var opt = document.createElement("textarea");
                opt.name = x;
                opt.value = PARAMS[x];
                temp_form .appendChild(opt);
            }
            document.body.appendChild(temp);
            temp_form .submit();
        }      

注意:如需新打开窗口 form 的target属性要设置为‘_blank‘

然后请求post(‘${contextPath}/analyse/detail.do‘,{carNum :carNum,ids:refIds});就可以了

时间: 2024-12-06 00:49:28

js post 方式 新开窗口的相关文章

JS兼容方式获取浏览器的宽度

<script type="text/javascript"> //need to wait until onload so body is available window.onload = function(){ function getWindowWidth(){ if (window.innerWidth){ return window.innerWidth; } else if (document.documentElement.clientWidth){ ret

Node.js V0.12 新特性之性能优化

v0.12悠长的开发周期(已经过去九个月了,并且还在继续,是有史以来最长的一次)让核心团队和贡献者们有充分的机会对性能做一些优化. 本文会介绍其中最值得注意的几个. http://www.infoq.com/cn/articles/nodejs-v012-optimize-performance?utm_source=infoq&utm_medium=related_content_link&utm_campaign=relatedContent_articles_clk Node.js和

【jquery】ajax 请求成功后新开窗口被拦截解决方法

问题: 前面开发项目时碰到一个问题,ajax 异步请求成功后需要新开窗口打开 url,使用的是 window.open() 方法,但是很可惜被浏览器给拦截了,怎么解决这个问题呢? 分析: 浏览器之所以拦截新开窗口是因为该操作并不是用户主动触发的,所以它认为这是不安全的就拦截了(不过如果是 _self 的话就不会有这个限制),即使 ajax 回调函数中模拟执行 click 或者 submit 等用户行为(trigger('click')),浏览器也会认为不是由用户主动触发的,因此不能被安全执行,所

JS 引入方式 基本数据类型 运算符 控制语句 循环 异常

一.JS引入方式 什么是JavaScript? JavaScript是运行在浏览器端的脚步语言,JavaScript主要解决的是前端与用户交互的问题,包括使用交互与数据交互,JavaScript是浏览器解释执行的. JavaScript的嵌入方式 1.行间事件 <input type="button" name="clicktook" onclick= "alert("ok!");"> 2.页面scrip标签嵌入

js新开窗口避免浏览器拦截解决方案

Ajax毁掉函数中,打开新窗口解决方案 var w = window.open(); $.post("GetHomToTestPaper", {homeworkName:homeworkName }, function (data) { if (data.code == 1) { window.location.href = "/teacher/homework/list"; w.location.href = data.message; } else { dial

用HTML/JS/PHP方式实现页面延时跳转

WEB开发中经常会遇到页面跳转或延时跳转的需求,掌握各种页面跳转方式非常必要. 以下是我总结有用HTML/JS/PHP三类方式实现跳转的方法,例子皆为三秒后跳转到index.php 页面. 1,HTML 方法: 在 HEAD 中添加 <meta> 标签 <meta http-equiv=”refresh” content=”3;url=’index.php’” > 2,JS 控制跳转方法 A.Location 直接加链接方式 <script type="text/j

Vue.js 3.0 新特性预览

总结起来,Vue 3 以下方面值得我们期待 : 更快 更小 更易于维护 更多的原生支持 更易于开发使用 完整的PPT:docs.google.com/presentatio… Evan 和 Vue 团队的目标是尽可能顺利地过渡到 Vue 3 ,在这个过程中,这些变化在无形地改善了框架. 让 Vue 更快 虽然 Vue 已经非常快了,但 Evan 认为 Vue 3 会更快.如何做到呢… 重写虚拟DOM (Virtual DOM Rewrite) 随着虚拟 DOM 重写,我们可以期待更多的 编译时(

JS创建对象方式

一.对象:对个数据的封装体,保存多个数据的容器(可以统一管理多个数据) 1.分类 1)内建对象:由ES标准定义的对象,在任何ES的实现都可以使用 例如:Math String Number Function Object 2)宿主对象:由JS运行环境提供的对象 例如:DOM BOM 3)自定义对象:用户自己定义的 2.组成: -属性:由属性名(字符串)和属性值(任意类型)构成 -方法:一种特殊的属性(属性值是函数) 3.访问对象内部的数据 -对象.属性名:属性名不确定(变量):属性名有特殊字符时

Atitit js es5 es6新特性 attilax总结

1.1. JavaScript发展时间轴:1 1.2. 以下是ES6排名前十的最佳特性列表(排名不分先后):1 1.3. Es6 支持情况 基本chrome ff 360se8全面支持了2 2. ECMAScript 2015(ES6)的十大特征 – WEB前端开发 - 专注前端开发,关注用户体验.html2 1.1. JavaScript发展时间轴: 1.1995:JavaScript诞生,它的初始名叫LiveScript. 2.1997:ECMAScript标准确立. 3.1999:ES3出