发布表单,等待十秒钟并重定向到

时间:2013-10-17 19:56:12

标签: javascript http-post

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

第1步 - 通过POST

接收URL地址,名称,值,数字和ID

第2步 - 等待10秒

第3步 - 发送(也通过邮寄)通过邮件收到的以下信息:姓名,价值,数量和ID到通过邮寄收到的URL

第4步 - 重定向到收到帖子的网址,然后在屏幕上打印帖子。

为此我正在使用下面的代码,但是出了什么问题,因为重定向的URL中的打印应该带来帖子信息是空的,所以看起来因为任何原因信息不是发布正确。

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

代码:

HTML - 创建要POST的表单:

<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>

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

<?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>

1 个答案:

答案 0 :(得分:0)

您的代码存在很多问题。

<强> 1。您可以使用print_recho

<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']; ?>">

你用所有的输入值犯了同样的错误。操作值特别重要,因为它必须是表单所在的地址。

<强> 2。您提交表单但您也重定向页面

表单submit()与重定向location.href

之间存在冲突

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

最后,我建议您查看jQuery库,以便更轻松地编写JavaScript代码。