window.open 传参,get和post两个方法?
url后拼接参数的是get方法,那post方法是怎么样的,有大佬能解释一下,并且给个样例吗?
回答:
window.open是利用浏览器地址栏打开路径,而浏览器地址栏发送的都是get请求,所以单纯的window.open是无法发送post请求的,网上的解决方法大都是先打开一个空白标签页,然后修改里面的内容为form表单,利用form表单提交发送post请求并修改地址栏地址
https://blog.csdn.net/qq_35479063/article/details/107519095
回答:
POST有些繁琐, GET与POST都有跨域问题
var postParams = {}; postParams.param1 = "param1";
postParams.param2 = "param2";
//当url前无域名时,记得获取host,否则浏览器会报NS_ERROR_MALFORMED_URI错误
var url = "";
windowOpen(url, postParams);
/**
* window.open()方法以post请求方式打开新窗口
* @param url 请求地址
* @param postParams 请求参数
*/
function windowOpen (url, postParams) {
var newWin = window.open();
//没有host时,浏览器会报NS_ERROR_MALFORMED_URI错误,所以url需要加上host,host包括端口号
var host = location.origin;
url = host + url;
var formStr = '<form style="visibility:hidden;" method="POST" action="' + url + '">';
for (var key in postParams) {
formStr += "<input type='text' name='" + key + "' value='" + postParams[key] + "' style='display: none'>";
}
formStr += "</form>";
newWin.document.body.innerHTML = formStr;
newWin.document.forms[0].submit();
//窗口关闭事件
setTimeout(function () {
newWin.close();
}, 250);
}
以上是 window.open 传参,get和post两个方法? 的全部内容, 来源链接: utcz.com/p/934315.html