0

我有一个页面需要执行以下步骤:

第 1 步 - 通过接收 URL 地址、名称、值、编号和 IDPOST

第 2 步 - 等待 10 秒

第 3 步 - 发送(也通过邮寄)通过邮寄收到的以下信息:名称、值、编号和 ID 到通过邮寄收到的 URL

第 4 步 - 重定向到收到帖子的 URL 并在屏幕上打印帖子。

为此,我使用了下面的代码,但出现了任何问题,因为重定向 URL 中的打印应该使帖子信息变空,因此无论出于何种原因,信息似乎都没有正确发布。

有人可以告诉我我做错了什么吗?

代码:

HTML - 创建要发布的表单:

<form id="ret" name="return_url" method="post" action="<?php print_r($_POST['url']);?>">
 <input type="hidden" name="name" value="<?php print_r($_POST['name']);?>" />
 <input type="hidden" name="value" value="<?php print_r($_POST['value']);?>" />
 <input type="hidden" name="num" value="<?php print_r ($_POST['num']);?>" />
 <input type="hidden" name="ID" value="<?php print_r($_POST['ID']);?>" />
 <input type="hidden" name="status" value="OK" />
</form>

将发布的 url 内容添加到$retorno将在 Javascript (PHP) 中使用的 var:

<?php
    $retorno = $_POST['url'];
?>

启动计数器,提交表单并重定向(使用 javascript):

<script language="javascript" type="text/javascript">
  window.onload = function() {
    function countdown() {
      if (typeof countdown.counter == 'undefined') {
        countdown.counter = 10; // initial count
      }
      if (countdown.counter > 0) {
        document.getElementById('count').innerHTML = countdown.counter--;
        setTimeout(countdown, 1000);
      }
      else {
        document.getElementById("ret").submit();
        location.href = '<?php echo $retorno?>';
      }
    }
    countdown();
  };
</script>
4

1 回答 1

0

你的代码有很多问题。

1.你print_r在应该使用的地方使用echo

<form id="ret" name="return_url" method="post" action="<?php print_r($_POST['url']);?>">

在上面的行中,print_r将以一种无效的方式输出 的内容$_POST['url']作为action属性值。查看生成页面的 HTML 源代码。

这应该重写为:

<form id="ret" name="return_url" method="post" action="<?php echo $_POST['url']; ?>">

您对所有输入值都犯了同样的错误。action 值尤其重要,因为它必须是表单发布的地址。

2. 您提交了表单,但同时也重定向了页面

submit()您在表单和重定向之间存在冲突location.href

只需删除该location.href行。如果您的 HTML 表单配置正确,JavaScriptsubmit()会将浏览器发送到action属性中定义的页面。

最后,我建议您查看 jQuery 库以使 JavaScript 编码更容易。

于 2013-10-17T22:06:36.637 回答