【问题标题】:How to do post request and render response as a new page?如何发布请求并将响应呈现为新页面?
【发布时间】:2026-02-06 00:15:02
【问题描述】:

我可以发送 POST 请求并通过提交表单将响应呈现为整页。我怎样才能通过 ajax 请求做到这一点?那就是:

$.ajax('test.com', {
    'method': 'POST',
    'success': function(res) {
        // open a new page, render res as a full page
        // I can't simply do window.location = "foobar" as it's a POST
    }
});

或者,如果这很奇怪,那么传统的做法是什么?

【问题讨论】:

  • 你为什么选择 ajax 来完成这个任务?
  • 如果结果页面是html,则使用method="POST"而不是使用脚本提交表单
  • 使用 Ajax 的整个想法是呈现一个完整的新页面。

标签: javascript ajax post


【解决方案1】:

如果您只需要在新页面中打开表单处理的结果,则不需要 ajaxa,您可以使用表单的目标属性,如

<form action="http://test.com/" method="post" target="_blank">
Your inputs, etc.
</form>

【讨论】:

  • 有没有办法避免使用表单?
  • 为什么要避免形式?无论如何,用户正在某处输入数据。如果您真的不需要它,我可以即时创建表单,发送并且永远不会显示给用户。这就是没有 File API 的 ajax 文件上传工作的方式。
  • 我只是觉得它很复杂,应该有更直接的方法......但无论如何,谢谢!
【解决方案2】:

好吧,如果您此时不关心响应,我会选择表格。 但如果你这样做了,你可以检查响应并执行以下操作:

$.ajax('test.com', {
    'method': 'POST',
    'success': function(res) {
        if ( res.code == 200 )
            document.location = 'page1.htm';
        else
            alert('error!');
    }
});

【讨论】:

  • 我不能这样做,因为它不是一个位置。这将是根据我的 POST 数据即时生成的页面响应
  • 所以你应该看看这个问题的第一个答案*.com/questions/133925/…