javascript - $_POST 未定义,同时定义?

标签 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";
    }
    ?>

最佳答案

我的问题是当我点击我的提交按钮时我调用了两个函数。我曾经打算使用一种不同的方式来处理这个问题,但忘了删除旧的方式。

这是我的按钮所在的代码。

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

相关文章:

javascript - JS document.getElementById 在按钮点击时执行

带有 PHP carbon 的 javascript 全文 Date() 格式

php - 如何使用 JavaScript 在 PHP GET 变量上运行 if 语句?

javascript - 为什么 jQuery 删除文本的最后一个字符?

javascript - JQuery .hover/.on ('mouseleave' ) 无法正常运行

javascript - 如何使用 jQuery/AJAX 在 HTML div 中加载 html 页面内容?

javascript - 如何缩短自动发布的文本长度

php - 在 Laravel eloquent 数据库播种机/工厂中播种关系数据 - 类型错误 - Arg 1 应该是 Eloquent\Model - 给定集合

php - 如何使用 PHP 删除 Excel 工作表中的行

javascript - Primeng angular2 ng-模板