2011-03-11 76 views
0

我问了这个question,但有太多的废话代码,我已经把它分解到这次最小的代码量。表单页面发送数据确认页面。在一页上提交数据两次

向用户确认页面回波数据,以便他们可以仔细检查它。那么如果他们点击“提交”它重新加载相同的页面发送一封电子邮件给我,然后它更新表单动作的URL和一个小的JavaScript提交表单再次没有用户知道它,因为$ url不是空的。一切正常,但JavaScript没有完成其任务。页面刚好位于那里,我可以看到页面源代码中的JavaScript以便它在那里。

窗体页:

<form action="test.php" method="post"> 
    Name: <input type="text" name="name" value=""/> 
    <input type="submit" name="send" value="send"/> 
</form> 

确认页:

<? 
ini_set("display_errors","2"); 
ERROR_REPORTING(E_ALL); 

$url = ''; 
    if (isset($_POST['send'])) 
     { 
      $data = $_POST['name']; 
     }else{ 
      echo "SEND is not Set"; 
     } 


    if (isset($_POST['submit'])) 
     { 
      $data = $_POST['data']; 
      $my_message = ' TEST DATA:<br/><br/>Child Name'. $data .''; 
      $subject = 'Mike TEST'; 
      $headers = "From: [email protected]\r\n"; 
      $headers .= "Reply-To: [email protected]\r\n"; 
      $headers .= "Content-type: text/html\r\n"; 

      $url = "https://www.paypal.com/cgi-bin/webscr"; 

      mail("[email protected]",$my_message,$subject,$headers); 
     }else{ 
      echo "SUBMIT is not Set"; 
     } 
?> 
<html> 
<head> 
</head> 

<body> 

<form action="<? echo $url; ?>" method="post"> 
    Name: <? echo $data; ?><input type="hidden" name="data" value="<? echo $data; ?>"/><br/><br/> 
<input type="submit" value="submit" name="submit"> 
</form> 
<? 
if ($url != "") { 
?> 
<script language="javascript"> 
document.forms[0].submit(); 
</script> 
<? 
}else{ echo "URL NOT SET";} 
?> 
</body> 
</html> 
+0

您可以编辑您的原始问题。 – 2011-03-11 16:49:05

+2

JavaScript代码在哪里? – 2011-03-11 16:51:45

+0

抱歉,该网站仍然是新的......我不确定这是否没有意义,因为大多数关于旧问题的意见和反馈都是关于代码是多么糟糕。 – Denoteone 2011-03-11 16:52:38

回答

1

删除此行代码比你会得到你想要的东西:

<input type="submit" value="submit" name="submit"> 

为什么?

这是因为“名称”。 名称为“submit”的input元素与submit函数冲突。 你想调用“提交”功能,但是传递只是得到了“提交”元素。

你可以利用这个一试:

alert(document.forms[0].submit); 

这是一个因素。

顺便说一句,你可以执行“提交”功能,而不需要“提交”元素。

+0

谢谢你的回答和解答!很有帮助。 – Denoteone 2011-03-11 17:48:40

0

而不是将数据重新发布到另一个URL为什么不使用卷曲对象在PHP发送电子邮件后发送?

+0

我可以做到这一点....但现在我只想了解为什么它当它看起来应该时不工作。 – Denoteone 2011-03-11 17:11:18

+0

如果我使用curl,我知道我可以将发布数据发送到url,但是我也可以在那里重定向用户? – Denoteone 2011-03-11 17:14:20

+0

嗯不,它不会,我想你可以做一个301重定向到转发,但我怀疑这跟你的解决方案差不多,或者更糟的是它可能无法可靠地依赖于浏览器。 – JaredMcAteer 2011-03-11 18:31:58