1

在过去的 3 个小时里,我一直在为这个问题发疯。我有这个完全工作......它实际上仍然是,但在另一页上。唯一的问题是它在不同的页面上停止工作。这是基本的运行:

  1. 用户访问页面,点击按钮,JavaScript ModalBox 打开。
  2. 在模态框中是一个表单,用户填写并点击发送。
  3. 表单操作本身,因此它返回并检查提交按钮上的 isset() 是否为真。

这是看起来的问题。我在另一个脚本上得到了这个工作,但它超过 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 小时回来。好吧,至少我希望再也不会犯这样的错误了。

4

2 回答 2

1

表单通常通过 POST 提交,但您正在检查 $_GET。您是否在执行 AJAX 请求并通过 GET 发送数据?如果没有,您应该检查:

if (isset($_POST['initForm'])){
    ...
于 2011-08-01T23:36:10.360 回答
0

我会做:

if (isset($_GET['initForm']) && $_GET['initForm'] == 'Send'){

此外,由于它的不妥协,我也可能会method在表单元素中指定并使用POST而不是。GET

另外,为什么要echo 'Complete';head块中输出?这个不对。它应该在body元素中(这也可能是问题的一部分)。

于 2011-08-01T23:32:42.283 回答