【发布时间】:2020-10-11 06:04:07
【问题描述】:
首先,这是我在 stackoverflow 上的第一个问题。这是从其他人的问题中获得答案的好地方。但是这次我找不到我的答案,所以我的问题在下面......
我遇到了与此问题中描述的完全相同的问题: Simple form not sending data via _POST
这是完全相同的问题:即使 var_dump($_POST); 向我展示了这个:array(0) { } 并尝试访问传递的数据给了我一个 Notice: Undefined index
过去 2 天我一直在摸不着头脑。
我的代码:
<form action="" method="POST" id="test">
<label for="email">Email</label><br>
<input type="text" name="email" id="email" value=""><br>
<input class="btn btn-primary btn-lg btn-block mb-5" type="submit" name="save-company-button" id="save-company-button" value="SAVE">
</form>
这是最简单的形式,但仍然不起作用。我不明白为什么。
提前感谢您的帮助。
编辑:
视图内容:
<?php
$siteroot = SITEROOT;
// Metadata
$meta_data_title = "About us";
// Page title
$main_title = "About us";
// Additional CSS to the main CSS (bootstrap.css and custom-style.css)
$other_css = "";
// Javascript
ob_start();
require "viewAboutUs/viewAboutUs-javascript.php";
$javascript = ob_get_clean();
// Breadcrumb
$breadcrumb = "<li class=\"breadcrumb-item\"><a href=\"$siteroot\">Home</a></li>
<li class=\"breadcrumb-item active\" aria-current=\"page\">About us</li>";
// Main content
ob_start();
require "viewAboutUs/viewAboutUs-content.php";
$main_content = ob_get_clean();
// Javascript at the bottom
$javascript_bottom = "";
// Template file
require "template.php"
?>
viewAboutUs-content.php 的内容:
<form action="" method="POST" id="test">
<label for="email">Email</label><br>
<input type="text" name="email" id="email" value=""><br><br>
<input class="btn btn-primary btn-lg btn-block mb-5" type="submit" name="save-company-button" id="save-company-button" value="SAVE">
</form>
文件viewAboutUs-javascript.php为空。
控制器displayAboutUs.php的内容:
<?php
function displayAboutUs() {
var_dump($_POST);
echo "Test: " . $_POST["email"] . "<br>";
if (isset($_POST["save-company-button"])) {
echo "Button clicked ! <br>";
}
require VIEWS_FOLDER . "/pages/viewAboutUs.php";
}
?>
抱歉,提供代码的时间,我正在发现stackoverflow的接口......
编辑#1
如果我将项目复制粘贴到我放在 /public/ 文件夹中的简单 php 文件中,它可以正常工作。
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<?php
var_dump($_POST);
echo "Test: " . $_POST["email"] . "<br>";
if (isset($_POST["save-company-button"])) {
echo "Button clicked ! <br>";
}
?>
<form action="" method="POST" id="test">
<label for="email">Email</label><br>
<input type="text" name="email" id="email" value=""><br><br>
<input type="submit" class="btn btn-primary btn-lg btn-block mb-5" name="save-company-button" id="save-company-button" value="SAVE">
</form>
</body>
</html>
在这种情况下唯一改变的是我这次使用的是引导程序。否则,我的所有表单都将按照我迄今为止的代码组织方式完美运行。
编辑#2
在多次查看我的代码后,我得出的唯一结论是问题一定出在表单本身的 HTML 代码上。表单标签和/或输入标签之一的属性中可能缺少某些内容,因为当前剩下的属性是最低限度的。
如果有人是 HTML5 专家,那可能会有用...
编辑#3
事情似乎表明我在 EDIT #2 中写的内容是正确的,因为如果我在主控制器 (index.php) 中执行 var_dump($_POST);,就在调用 displayAboutUs() 之前,结果是相同的: 没有数据通过。
所以,到目前为止,这个表单并没有像我点击提交按钮时那样发送任何东西,但是如果我将它复制粘贴到另一个单独的测试文件中,它就会发送。
问题是:为什么?
【问题讨论】:
-
对不起,我忘了说我正在使用引导程序。这可能很重要。
-
好的,你能向我们展示一下这个文件的内容吗
-
您是否将
email的值存储在变量中? -
您正在发布到同一个文件,这意味着(可能)在某个时候在同一个文件中有处理发布数据的代码。你也可以分享一下吗?
-
对不起,我正在发现堆栈的工作方式,我可能会犯一些错误......