在过去的3个小时里,我一直在为这个问题发疯。我让它完全工作.....现在它仍然是,但在另一页。唯一的问题是,在不同的页面上,它停止工作。下面是基本的概要:
- 用户访问页面,点击按钮,JavaScript ModalBox打开。
- 在模态框中是一个表单,用户填写并点击Send。
- 表单动作本身,所以它返回并检查isset()是否为true。
这似乎就是问题所在。我在另一个脚本上工作,但它超过5页长,所以这里是一个小脚本,我只是不能为我的生活工作:
<?php session_start(); ?>
<html>
<head>
<?php
if (isset($_GET['initForm'])){
echo 'Complete';
}
?>
</head>
<body>
<?php
echo '
<div style="padding:0;margin:0;float:left;height:120px;width:100%;">
<div align="center" width="50%" style="padding-top:2px;"><img src="images/step1.png"></div>
<div align="center" width="50%" style="font-face:Arial; font-size:14px;padding-top:4px;">Which package are you interested in?</div>
<div align="center" width="50%" style="font-face:Arial; font-size:14px;padding-top:6px;">
<FORM action="test.php" name="initForm" id="initForm" onsubmit="return false;">
<select name="packageName">
<option value="Weekend">Weekend - 4 Days/3 Nights</option>
<option value="Weekday">Weekday - 5 Days/4 Nights</option>
</select>
</div>
<div align="center" width="50%" style="font-face:Arial; font-size:14px;padding-top:6px;">
<input Type = "Submit" name="initForm" Value ="Send" onclick="Modalbox.show(''test.php'', {title: ''Vacation Booking'', width: 600, params:Form.serialize(''initForm'')}); return false;">
</FORM>
</div>
</div>';
?>
</body>
</html>
——固定解决方案如下 :-------
标签必须放在html的最外层,现在我可以访问$_Get数组的所有元素,包括提交按钮。有人能解释一下为什么这么挑剔吗?我想要回我的3小时。好吧,至少我不会再犯这样的错误了。表单通常通过POST提交,但您正在检查$_GET。您正在执行AJAX请求并通过GET发送数据吗?如果没有,您应该检查:
if (isset($_POST['initForm'])){
...
我会这样做:
if (isset($_GET['initForm']) && $_GET['initForm'] == 'Send'){
另外,我也可能在form元素中指定method
,并使用POST
而不是GET
,因为它是不妥协的。
另外,为什么在head
块中输出echo 'Complete';
?这是不对的。它应该在body
元素中(这也可能是问题的一部分)。