我有以下由某些PHP逻辑呈现的表单。表格很好;你可以看到文本输入和提交按钮等等。
在IE中,表单按预期工作。第一种形式是'index.php?subscribe = go',第二种形式是'index.php?unsub = go',但在FF和Chrome中,单击提交按钮会重新加载页面(不进行表单操作)。我还没有检查过其他浏览器。
我在Firebug中发现Firefox中的<form>
标记甚至存在。这很奇怪;看看:
else
{
echo '<div class="subs_main">';
if (isset($_GET['subscribe']))
{
if ($_GET['subscribe'] != 'go')
{?>
Subscribe to <b>Bella Blog</b> for specials, sales, news and more!
<br />
<form action="index.php?subscribe=go" method="post" name="subscribe_form" onsubmit="return checkForm();">
Name: <input type="text" name="name" size="15" />
<br />
Email: <input type="email" name="email" size="20" />
<br />
<input type="submit" value="subscribe!" name="submit" />
</form>
<p class="unsub">You can <a href="index.php?unsub">unsubscribe</a> at any time</p>
<?php
}
else
{
// subscribe user
}
}
elseif (isset($_GET['unsub']))
{
if ($_GET['unsub'] != 'go')
{?>
Sorry to see you go! You can <a href="index.php?subscribe">re-subscribe</a> at any time!
<br />
<form onsubmit="return checkForm2()" name="unsub_form" method="post" action="index.php?unsub=go">
Email: <input type="email" name="email" size="20" />
<br />
<input type="submit" value="unsubscribe" name="submit" />
</form>
<?php
}
else
{
// process unsubscription HERE
}
}
echo '</div>';
}
这是用于表单验证的JS(我认为可以忽略不计,因为它在IE中工作,我在评论此脚本时获得相同的结果):
<script type="text/javascript" language="javascript">
function checkForm()
{
var regex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$/;
var form = document.forms.subscribe_form;
var name = form.name.value;
var email = form.email.value;
if (name == '' || email == '')
{
alert('You must enter both your name and email address!');
return false;
}
else if (!email.match(regex))
{
alert('You must enter a valid email!');
return false;
}
return true;
}
function checkForm2()
{
var form = document.forms.unsub_form;
var email = form.email.value;
if (email == '')
{
alert('You must enter an email address!');
return false;
}
return true;
}
</script>
答案 0 :(得分:1)
如果你在表单中使用POST方法,所有参数都应该通过INPUT html元素传递(即action =“index.php?subscribe = go”和action =“index.php?unsub = go”是错误的)。< / p>
答案 1 :(得分:0)
<form>
标签不存在?除非您具有将输出定制到USER_AGENT的代码,否则将给定的一组GET / POST输入传递到页面的任何浏览器都应该接收相同的输出。当然,它们可以呈现页面并以(可能显着地)不同的方式响应事件,但源代码应该是相同的。
发布页面源代码,我们可以查看可能存在的问题。
答案 2 :(得分:-1)
这是一个古怪的WAMP问题。我在文件中有一些其他PHP代码生成了WAMP错误(但在实时站点上没有错误),我一直忽略它,因为它没有意义。 “未定义的索引”就是它所调用的,当你使用$ _POST [example]而不是$ _POST ['example']调用PHP变量时会出现错误。最荒谬的。
因此,WAMP吐出了一堆HTML(错误<table>
),这些HTML与我页面上的其他表单混在一起。 IE可以处理混乱的表单,我的表单(显示有问题)正常工作,而FF / Chrome则不能。
希望这有助于某人。