我有一个问题,我一直在工作,似乎不能弄清楚。在一天结束的时候,我想从用户表单传递一些值到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="">>>Select<<</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="">>>Select<<</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,显示语法错误(在其他中)
-使用浏览器开发工具。