一个POST索引显示为真,另一个未定义,但两者都以相同的方式实现(看起来是)


One POST index shows up true, another undefined, yet both have been implemented (what seems to be) the same way

我有一个问题,我一直在工作,似乎不能弄清楚。在一天结束的时候,我想从用户表单传递一些值到php脚本。我正在处理很久以前编写的文件,并试图处理我试图传递的变量,就像原作者试图处理自己的变量一样。然而,尽管我试图保持方法不变,但我得到了不同的结果。具体来说,在php脚本中,我想要传递这些变量,当我回显$_POST['whole']的值时,我得到true或false,然而,当我回显$_POST['plotX']的值时,我得到一个变量未定义的错误。

我为大量的代码道歉,但我希望如果你搜索queryDataCenterOfMass和plotX,你会看到我指的是什么。

HTML部分显示如下。在这里,用户为"whole"选择真或假,为"plotX"选择真或假。这实际上是来自网页的代码,php用于生成此代码,但我认为粘贴HTML会更简单。

<div id="wholeDiv" class="dynamicDiv">
                                    <b>Whole</b>
                                    <br>
                                    <select id="whole" name="whole" class="atomTypeSelect">
                                        <option value="">&gt;&gt;Select&lt;&lt;</option>
                                        <option value="true">Yes</option>
                                        <option value="false" selected="">No</option>
                                    </select>
                                </div>
<div id="plotXDiv" class="dynamicDiv">
                                    <b>Plot x dimension</b>
                                    <br>
                                    <select id="plotX" name="plotX" class="atomTypeSelect">
                                        <option value="">&gt;&gt;Select&lt;&lt;</option>
                                        <option value="true">Yes</option>
                                        <option value="false" selected="">No</option>
                                    </select>
                                </div>

下一部分是创建提交按钮的代码。重要的部分是,我相信,onclick部分,它调用queryDataCenterofMass函数,这是在一个单独的javascript文件中给出的,我粘贴在这个下面。

<input type="hidden" name="table" value= <?php echo $_GET['schema'] ?>/> 
<input type="hidden" name="queryName" 
                                                                                                    value= <?php echo $result[0]['query_id'] ?>/>
                    <input type='Submit' value=' Query Data' name='funcSearch'
                           onclick="queryDataCenterofMass(('<?php echo $result[0]['query_id'] ?>'),('<?php echo $_GET['schema'] ?>'),($('#firstFrame').val()) ,($('#lastFrame').val()) ,($('#skip').val()) , ($('#minX').val()) ,  ($('#minY').val()) ,
                               ($('#minZ').val()), ($('#maxX').val()), ($('#maxY').val()),  ($('#maxZ').val()), ($('#whole').val()), ($('#whole_pcb').val()), ($('#molName').val()),($('#atomTypeDll').val()), ($('#atomID').val()), ($('#molID').val()) ), ($('#plotX').val()), ($('#plotY').val()), ($('#plotZ').val()); false;"
                           class='dynamicParamButton'><br/><br/>
下面是queryDataCenterofMass的定义。它似乎使用jQuery函数通过post传递所有内容到comfunction.php。
function queryDataCenterofMass(queryId, schema, firstFrame, lastFrame, frameSkip, minX, minY, minZ, maxX, maxY, maxZ, whole, wholePcb, molName, atomType, atomID, molID, plotX, plotY, plotZ) {
$("#waiting").show(500);
$("#interface").hide(0);
// generate a random number to pass to function.php and append to the end of our gnuplot files to make them unique
var random_num = Math.floor((Math.random() * 1000000) + 1);
$.post('./function_files/comfunction.php',
    {
        random_num: random_num,
        query_id: queryId,
        simschema: schema,
        firstFrame: firstFrame,
        lastFrame: lastFrame,
        frameSkip: frameSkip,
        minX: minX,
        minY: minY,
        minZ: minZ,
        maxX: maxX,
        maxY: maxY,
        maxZ: maxZ,
        whole: whole,
        whole_pcb: wholePcb,
        molName: molName,
        atomType: atomType,
        atomID: atomID,
        molID: molID,
        plotX: plotX,
        plotY: plotY,
        plotZ: plotZ
    },
    function (data) {
        $("#waiting").hide(0);
        $("#results").show(500);
        var img = document.getElementById("com_img");
        img.src = "../queries/gnuplot_tmp_files/gnuplot_output" + random_num;
        $('div#message').html(data).fadeIn({duration: 700});
        $('html,body').animate({
            scrollTop: $('div#message').offset().top
        });
    });

}

就是这样。我不知道为什么在comfunction.php变量$_POST['plotX']是未定义的,但其他变量,包括$_POST['whole']不是。解决这个问题对我来说很重要。如果有什么方法我可以更好地问这个问题,或者更多的信息我可以提供,请不要犹豫让我知道。谢谢。

onclick行

 ($('#molID').val()) ),

这里好像多了一个括号。这使得onclick回调在plotX和其他元素发送之前提前结束。

Protip/s:
在HTML中加载混合javascript事件处理程序是个坏主意
-我只是在IDE中加载html,显示语法错误(在其他中)
-使用浏览器开发工具。