【问题标题】:javascript page redirect with POST method使用 POST 方法重定向 javascript 页面
【发布时间】:2026-01-31 08:20:04
【问题描述】:

我有一个网站,可将用户重定向到外部主机以进行付款处理。当根据付款处理的结果将用户返回到我的网站时,我需要使用 POST 方法将用户重定向到最终网页,以便他们的订单可以完成。我有下面的代码,它适用于 Chrome 和 Opera 浏览器。在 Firefox 和 IE 浏览器上,它会失败,用户最终会看到一个空白页面。我需要修改什么才能在所有浏览器上运行?

var cSecurem = 'https://www.website.com/';

function gotofinalpage(p1,p2) { 
    setLoginCookie('secure');
    var cURL = cSecurem + 'bh/finalpage.r?param1=' + p1 + '&param2=' + p2;
    var myForm = document.createElement("form");
    myForm.method="post" ;
    myForm.action = cURL ;
    myForm.submit() ;
}

【问题讨论】:

  • 您在 IE 和 Firefox 上遇到什么错误?
  • 所以您使用的是 POST 但通过查询字符串传递数据???
  • URL 中的值仅适用于 GET 方法。 POST 方法将从name 表单元素中获取值。
  • 也许 jQuery 的 AJAX 工具是最好的多浏览器支持的答案?
  • @Milkmannetje 不。这不是 AJAX,OP 没有理由不需要添加依赖项来解决简单的 javascript 问题。这个问题有解决办法。

标签: javascript html forms post


【解决方案1】:

请在提交前将表单添加到 dom 并重试:

document.body.appendChild(myForm)

编辑:也许你应该尝试内联 dom 操作。假设你有一个 id 为 formDiv 的空 div:

var el = document.getElementById("formDiv");
el.innerHTML = '<form id="myForm" action="https://www.website.com/bh/finalpage.r" method="post">' +
'<input type="hidden" name="param1" value="' + p1 + '">' +
'<input type="hidden" name="param2" value="' + p2 + '">' +
'</form>';
document.getElementById("myForm").submit();

注意:不要忘记在文档就绪事件中运行此代码。否则某些浏览器可能会失败。

【讨论】:

  • 我尝试了下面的代码并没有解决问题。实际上,在尝试了这段代码之后,Opera 在停止工作之前一直在工作。 var myForm = document.createElement("form"); myForm.method="post" ; myForm.action = cURL ; document.body.appendChild(myForm); myForm.submit() ;
  • 我用另一种值得尝试的方法编辑了我的答案。
  • 这是我得到的错误。 The character encoding of the HTML document was not declared. The document will render with garbled text in some browser configurations if the document contains characters from outside the US-ASCII range. The character encoding of the page must be declared in the document or in the transfer protocol.。根据我在网上进行的搜索,我在 Javascript 中添加了 charset='utf-8',但这看起来并没有多大帮助 &lt;SCRIPT SRC='js/bh/javascriptfilename.js' LANGUAGE='JavaScript' charset='utf-8'&gt;&lt;/SCRIPT&gt;