javascript - window.open 传参,get和post两个方法?

 

问题描述:

url后拼接参数的是get方法,那post方法是怎么样的,有大佬能解释一下,并且给个样例吗?


 

第 1 个答案:

window.open是利用浏览器地址栏打开路径,而浏览器地址栏发送的都是get请求,所以单纯的window.open是无法发送post请求的,网上的解决方法大都是先打开一个空白标签页,然后修改里面的内容为form表单,利用form表单提交发送post请求并修改地址栏地址

https://blog.csdn.net/qq_35479063/article/details/107519095


 

第 2 个答案:

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);
  }

分布式和集群部署哪种更好?有什么区别?