如何发送POST数据到一个新的网页,然后看到该网页的结果?
从检查这里的stackoverflow,我发现并尝试了以下代码:
$.post( 'https://192.168.1.1/newpage.php', { 'test_param' : filenames_string }, function() {
window.location.href = 'https://192.168.1.1/newpage.php';
});
它的工作原理是从客户端浏览器获取数据到服务器。但是它随后再次调用该页面以显示结果,这一次没有发送POST数据。
我已经能够使用以下有效的方法:
window.open('https://192.168.1.1?test_param={contents of the filename_string goes here}
但是我想用POST来代替,因为项目列表将来可能不仅仅局限于文件名,而且/或者可能有成千上万的文件名可以发送。
问题是它在POST中获得了正确的数据,但是当页面实际显示第二行代码(windows.location)时,数据丢失了。或者,更具体地说,缺少POST数据,因此返回的结果不是原始POST数据的结果。第二个调用(window.location)显示基于未发送POST数据的结果。它似乎只是使用。post将工作,但我需要得到这些项目的zip文件返回在一个新的浏览器选项卡显示附加信息。所以我需要去一个新的页面,也能够在一个调用中发送POST数据。这可能吗?
感谢您提出的任何解决方案。
我给你这个例子作为参考,文件被命名为test.php作为一个整体:
<?php
//
if(isset($_POST["test_param"])) {
echo "test_param=" . $_POST["test_param"] . " at " . time();
exit;
}
?>
<html lang="en">
<head>
<meta charset="UTF-8">
<script src="//ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
$("button").on("click", function(evt) {
var filenames_string = "My filenames string.";
$.post(location.href, { 'test_param' : filenames_string }, function(data) {
$("#result").html(data);
});
//
// this is important:
//
return false;
});
});
</script>
</head>
<body>
<form method="post">
<button>Click me to send</button>
</form>
<div id="result"></div>
</body>
</html>
当您点击按钮时,jQuery向当前页面发送一个查询,结果内容显示在div id=result中。
文章标题不准确。我应该指定所需的整体操作,而不仅仅是显示。相反,我需要打开带有用于生成网页的POST信息的新页面。但是单独使用POST方法只能发送数据。到窗口的时候。open被调用到同一页时,POST数据就消失了。因此,为了连接这两个操作,我可以通过将数据发送到新网页,然后使用页面处理POST数据返回的数据使用GET第二次调用该网页,从而获得所需的结果。虽然不完美,但简单有效。
基本上,我将文件名列表发送给zip,然后返回创建的zip文件的文件名。然后,我在GET参数中使用此信息调用该页面,并返回该文件。
但正如最初所问的,似乎没有办法通过POST发送数据,同时也打开一个窗口…至少不会在同一个调用中返回创建的文件。我希望有一个类似window的功能。打开可以添加POST数据的位置。那边,窗户那边。Open将正确处理返回的包含application/zip mime信息的报头。