好的,我现在正处于十字路口。出于某种原因,我有一个页面既可以看到某个 $_POST 索引又看不到它。
我正在使用 jquery 脚本来加载带有页面的 div,这是我的功能。
function custom() {
var type = getType();
var start = $("#startdatepicker").val();
var end = $("#enddatepicker").val();
alert(type+start+end);
$(".reports").load("fragments/report.php", { type: type, frame: "custom", start: start, end: end });
}
函数中的警报显示我的每个变量都已设置。
在页面顶部,我在 $_POST 上放置了一个 foreach 循环以记录数组的内容。
if(!empty($_POST)){
foreach($_POST as $key=>$post){
error_log($key."--".$post);
}
}
我在我的日志中得到了这个
[Tue Nov 19 09:01:04 2013] [error] [client 10.20.30.83] type--program, referer: https://xxxxxxxx.local/report/Dashboard/?page=report
[Tue Nov 19 09:01:04 2013] [error] [client 10.20.30.83] frame--custom, referer: https://xxxxxxxx.local/report/Dashboard/?page=report
[Tue Nov 19 09:01:04 2013] [error] [client 10.20.30.83] start--11/11/2013, referer: https://xxxxxxxx.local/report/Dashboard/?page=report
[Tue Nov 19 09:01:04 2013] [error] [client 10.20.30.83] end--11/12/2013, referer: https://xxxxxxxx.local/report/Dashboard/?page=report
[Tue Nov 19 09:01:04 2013] [error] [client 10.20.30.83] start--11/11/2013, referer: https://xxxxxxxx.local/report/Dashboard/?page=report
[Tue Nov 19 09:01:04 2013] [error] [client 10.20.30.83] end--11/12/2013, referer: https://xxxxxxxx.local/report/Dashboard/?page=report
请注意,不仅有我的索引,还有一个额外的开始和结束索引。不知道为什么,但这是我目前最不担心的事情。
现在在同一个请求的同一个 report.php 页面的下方。像任何其他有思想的编码员一样,我检查索引是否设置并且它等于我想要的(我已经知道它确实如此),但是 if 语句没有通过它的条件语句。我总是会返回我的失败字符串。
if(isset($_POST["type"]) && $_POST["type"]=="program"){
}else{
echo "fail";
}
如果我删除 isset() 条件,我会收到类型未定义的错误。
我还想指出,在另一个 jquery 函数中,我对 load() 使用了相同的代码行,减去了开始和结束参数,它的工作原理非常棒。在建议之前,是的,我确实从失败的实例中删除了开始和结束参数,但这并没有解决问题。
感谢任何帮助。
编辑:这是我的整个 report.php。我很确定我没有重新定义或清空 $_POST。
<?php
if(!empty($_POST)){
foreach($_POST as $key=>$post){
error_log($key."--".$post);
}
}
if(empty($_POST)){
echo "<div class=\"stale\">
<p>
<h3>
<span>Select your parameters from the right.</span>
</h3>
</p>
</div>";
}elseif(isset($_POST["type"]) && $_POST["type"]=="rep"){
require_once("../functions/reps.php");
$frame=$_POST["frame"];
if($frame=="week"){
// get previouse week
}elseif($frame=="month"){
// get previouse month
}elseif($frame=="ptd"){
// get program to date
}elseif($frame=="custom"){
// get custom range
}
}elseif(isset($_POST["type"]) && $_POST["type"]=="program"){
require_once("../functions/programs.php");
$frame=$_POST["frame"];
$groups=getGroups();
$programs=getPrograms();
if($frame=="week"){
// get previouse week
// totals
// charts
// tables
echo "<div class=\"table-container\"><div class=\"custom-table\">
<table>
<tr>
<td>Program</td>
<td>Answered Calls</td>
<td>Abandoned Calls</td>
<td>Average Speed of Answer</td>
<td>Average Length of Calls</td>
<td>Average Wait Time</td>
</tr>";
foreach($groups as $group){
$showGroup=false;
foreach($programs as $program){
$programGroup=$program["group_name"];
$included=$program["calculate"];
if($programGroup==$group && $included){
$showGroup=true;
}
}
if($showGroup){
echo "<tr>
<td class=\"groupname\" colspan=6>$group</td>
</tr>";
}
foreach($programs as $program){
$programName = $program["display"];
$programGroup=$program["group_name"];
$included=$program["calculate"];
$id=$program["account_id"];
if($programGroup==$group && $included){
$answered=getLastWeekAnsweredCalls($id);
$abandoned=getLastWeekAbandonedCalls($id);
$abandonedPercent=$abandoned/$answered*100;
echo "<tr>
<td>$programName</td>
<td>".$answered."</td>
<td>".$abandoned." (".round($abandonedPercent,2)."%)</td>
<td>".gmdate("H:i:s", getLastWeekASA($id))."</td>
<td>".gmdate("H:i:s", getLastWeekALC($id))."</td>
<td>".gmdate("H:i:s", getLastWeekACW($id))."</td>
</tr>";
}
}
}
echo "</table>
</div></div>";
// pivots
// charts
// tables
}elseif($frame=="month"){
// get previouse month
}elseif($frame=="ptd"){
// get program to date
}elseif($frame=="custom"){
$start=$_POST["start"];
$end=$_POST["end"];
// get custom range
// totals
// charts
// tables
// pivots
// charts
// tables
}
}else{
echo "fail";
}
?>
最佳答案
我的问题是当我点击我的提交按钮时我调用了两个函数。我曾经打算使用一种不同的方式来处理这个问题,但忘了删除旧的方式。
这是我的按钮所在的代码。
<form method="POST" id="filter-form" onsubmit="submit_form();"> // This was the culprit
<p>
Start Date<input name="start" type="text" id="startdatepicker" />
</p>
<p>
End Date<input name="end" type="text" id="enddatepicker" />
</p>
<button class="button" onclick="custom()">Submit</button>
</form>
这是需要的
<p>
Start Date<input name="start" type="text" id="startdatepicker" />
</p>
<p>
End Date<input name="end" type="text" id="enddatepicker" />
</p>
<p>
<button class="button" onclick="custom()">Submit</button>
</p>
</p>
谢谢大家的帮助。
关于javascript - $_POST 未定义,同时定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20073937/