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

新手上路,请多包涵

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

阅读 3.4k
2 个回答

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);
  }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Microsoft
子站问答
访问
宣传栏