$ _POST未定义,并同时定义?

时间:2013-11-19 14:18:33

标签: javascript php jquery html

好的,我在这里的十字路口。由于某种原因,我有一个页面,可以看到某个$ _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";
    }
    ?>

1 个答案:

答案 0 :(得分:1)

我的问题是,当我点击提交按钮时,我正在调用两个函数。我曾经一次使用不同的处理方法,忘了删除旧的方法。

以下是我的按钮所在的代码。

<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>

谢谢大家的帮助。