使用http POST打开浏览器

时间:2018-01-03 01:54:01

标签: javascript html

我需要打开一个带有Http POST请求的浏览器页面。或者我可以使用GET请求打开,这是默认设置,但是我需要传递大量无法在查询字符串中传递的数据。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

魔术是使用target元素的form属性。您可以使用带有以下代码的JavaScript进行提交

<script type="text/javascript">
function openWindowWithPost(url, data) {
    var dataForm = document.createElement("form");
    dataForm.style.display = "none";
    dataForm.target = "TargetWindow";//Make sure the window name is same as this value
    dataForm.method = "POST";
    dataForm.action = url;
    for (var key in data) {
        var postData = document.createElement("input");
        postData.type = "hidden";
        postData.name = key;
        postData.value = data[key];
        dataForm.appendChild(postData);
    }
    document.body.appendChild(dataForm);
    var postWindow = window.open("", "TargetWindow", "status=0,title=0,height=600,width=800,scrollbars=1");
    if (postWindow) {
        dataForm.submit();
    } else {
        alert('You must allow popups for this map to work.');
    }
    //For testing invoking this function
    openWindowWithPost("http://google.com", {q: 'search', from: 'custom'})
}
</script>

使用

可以实现相同的行为
<!DOCTYPE html>
<html lang="en">
    <head><meta charset="utf-8" /><title>Test</title></head>
<body>
  <form method="POST" enctype="multipart/form-data" target="TargetWindow" action="http://google.com" onsubmit="openTargetWindowAndSubmit()">
    <input type="file" accept="image/*" />
    <input type="submit" value="Submit"/>
  </form>
  <script type="text/javascript">
  function openTargetWindowAndSubmit() {
    //We are just making sure the target window is available before submiting the form
    window.open("", "TargetWindow", "status=0,title=0,height=600,width=800,scrollbars=1");
  }
  </script>
</body>
</html>

注意:简单地使用target='_blank'target='TargetWindow'通常会打开一个新标签。当新标签对您没问题时,这很好。但是,当您想要在POP UP窗口中提交时,需要提供window widthheight

答案 1 :(得分:0)

因此,您唯一的选择是创建表单,将目标设置为_blank,然后触发提交。

<form action="/action" method="post" target="_blank" id="frm">
   <input type="hidden" name="foo" value="your huge string">
</form>

您可以使用JavaScript创建并提交。

document.getElementById("frm").submit()