解决了这个问题 - 见下文!
我偶然发现了这个问题...... 我的HTML表单的开头和结尾:
<form name="personform" id="personform" action="testperson.php" method="post" target="_blank">
<input type="hidden" id="formPmall" name = "formPmall" value = "">
<input type="hidden" id="formPCSEsiteHeading" name = "formPCSEsiteHeading" value = "">
<input type="hidden" id="formPCSEsiteHeadingText" name = "formPCSEsiteHeadingText" value = "">
<input type="hidden" id="formPCSEsiteHeadingShadow" name = "formPCSEsiteHeadingShadow" value = "">
<!-- skipping to end of form -->
<input type="hidden" id="formPok" name = "formPok" value = "">
</form>
这是我调用以设置值并提交表单的函数:
function testaPerson() {
document.getElementById("formPmall").value = vilkenMall;
document.getElementById("formPCSEsiteHeading").value = fAktuellSajtrubrik;
document.getElementById("formPCSEsiteHeadingText").value = CSEsiteHeadingText;
document.getElementById("formPCSEsiteHeadingShadow").value = CSEsiteHeadingShadow;
/* Skipping to end of function */
document.getElementById("formPok").value = "ok";
// SUBMIT
document.getElementById("personform").submit();
}
该函数可以工作,因为我可以在提交之前放置这样的JS alert():
alert("PM = *"+document.getElementById("formPmall").value+"*");
我得到正确答案(“ 4 ”而不是“**”为空)。 这适用于每个表单输入。
表格到达“testperson.php”:
<?php
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
if (!isset($_POST['formPok'])) header('Location: ../index.php');
// Init variables
$mall = 0;
$CSEsiteHeading = "#FF00FF";
$CSEsiteHeadingText = "";
$CSEsiteHeadingShadow = "";
// Skipping 60+ variable inits
// Read the form
$mall = $_POST['formPmall'];
$CSEsiteHeading = $_POST['formPCSEsiteHeading'];
$CSEsiteHeadingText = $_POST['formPCSEsiteHeadingText'];
$CSEsiteHeadingShadow = $_POST['formPCSEsiteHeadingShadow'];
// Skipping the rest...
索引['formPok']已设置,因为我没有转到“index.php”。
变量有值,因为我可以放一个PHP die();跟他们一样:
die("PM = *".$mall."*");
我得到了正确的答案(“ 4 ” - 未初始化为“ 0 ”或空为“**”) 这适用于每个PHP变量。
最后一页也显示正常。
BUT! 我在php_error.log中得到了这个:
[29-Oct-2013 13:30:01 UTC] PHP Notice: Undefined index: formPmall in /Applications/MAMP/htdocs/tngcse/template4/testperson.php on line 27
[29-Oct-2013 13:30:01 UTC] PHP Notice: Undefined index: formPCSEsiteHeading in /Applications/MAMP/htdocs/tngcse/template4/testperson.php on line 29
[29-Oct-2013 13:30:01 UTC] PHP Notice: Undefined index: formPCSEsiteHeadingText in /Applications/MAMP/htdocs/tngcse/template4/testperson.php on line 30
[29-Oct-2013 13:30:01 UTC] PHP Notice: Undefined index: formPCSEsiteHeadingShadow in /Applications/MAMP/htdocs/tngcse/template4/testperson.php on line 31
对于每一个贴出的价值!每次超过60!页面反复打开。
更多事实: * HTML表单和JS功能包括两个。 * PHP变量inits和表单读取是两个包括(我编辑到此测试的页面)
在我解决这个问题之前,还有四个要制作的页面并且不想继续。 我不知道这里有什么问题,需要你能想到的任何想法。 除了抑制PHP通知...... (这里有一个错误需要以正确的方式处理)
先谢谢你, Ava T。
为清晰起见添加: 进入PHP页面AND的值显示在最后一页上:
formPmall: 4 (PHP init = 0)
formPCSEsiteHeading: #FF0000 (PHP init = #FF00FF)
formPCSEsiteHeadingText: "My Family" (PHP init = "")
formPCSEsiteHeadingShadow: "2px 2px 4px #000000" (PHP init = "")
所有内容都已初始化,所有内容都会获得新值。 但它出于某种原因填充错误日志。为什么?
我不能回答我自己的问题(8小时限制)所以我在这里编辑:
问题得到解决!
解决方案比通知更奇怪(对我而言)。这就是我所做的:
我拿走了所有代码并逐个添加了PHP脚本,并为每一块运行了一次。一切都很好:PHP代码本身没有产生任何通知。所以我添加了两个css包含的HTML头:一个通用,一个修改其中一些通用。
没有注意事项:一切都很好,所以我逐个添加HTML,发现在引用HTML时,一个类是“罪魁祸首”!
这个类被声明为这样(修改一般的:不同的颜色,没有背景图像)
.line {
color: #FF0000;
background-image: url('');
}
解决方案是宣布它是这样的(完全正确 - 不是草率的切割粘贴):
.line {
color: #FF0000;
background-image: none;
}
每一个通知(每个值发布到此页面的一个 - 60+)都没有了!
请注意,直到在HTML中引用它,才会出现PHP通知!
<td class="line">This is my line</td>
我希望这可以帮助其他人,因为我发现很多关于PHP通知的帖子,其中唯一的解决方案是关闭通知。没有一个真正的解决方案。
感谢所有花时间阅读和回复的人!
阿瓦
答案 0 :(得分:1)
之前我遇到过这个问题,我相信您需要使用isset
查看是否选中了复选框的值。
if(isset($_POST['formPCSEsiteHeadingShadow'])){ $CSEsiteHeadingShadow = $_POST['formPCSEsiteHeadingShadow']; }
这里发生的是,我首先检查复选框是否使用条件检查(或设置)。如果条件为真,我将通过该值。
此页面可能会更多地阐述该主题:http://siliconstation.com/how-fix-php-notice-undefined-index/
答案 1 :(得分:0)
似乎您的javascript变量vilkenMall
未设置。使用alert()或console.log()检查其值。
另外,我不知道为什么在name
,=
和输入名称之间加上空格
,检查$_REQUEST
是否包含您的数据