***编辑
@alditis TY,尝试了您的建议,但之后 Javascript 不起作用。这个不需要那么安全,因为不涉及敏感数据,而且我正在学习它。此外,我将更多地使用这些查询,因此我更希望将整个数组放在其中。
@Barmar 是的,它确实如此,倒数第二个片段显示了谷歌浏览器如何使用它的调试器查看输出。这就是为什么它如此奇怪。
@FreudianSlip 我正在尝试一些东西,但从来没有把它放回去。
@saeed 阿拉伯 sheybani 我不太明白?代码有效,列表填充得很好,问题$_REQUEST['pos_no']
似乎不存在。它应该根据输出代码提交。也许我不明白你在说什么,你有一个可以链接我的例子吗?
我试图让一个 PHP/Javascript 动态填充的组合框通过 mysql 查询工作,并且在大多数情况下它工作正常,直到我点击提交按钮。到目前为止,这些脚本完全符合我的要求。
从我可以看到替换代码被排除在$_POST
数组之外。我认为这种情况正在发生,因为一旦表单加载它会列出预期的字段或$_post
当场创建数组,因此通过插入一些新代码它可能会忽略它?只是一个猜测,但似乎合乎逻辑,如果是这样,人们将如何解决这个问题?这已经困扰了我一个多月了。
Javascript:
<script type="text/javascript">
$(document).ready(subpos_selectbox_change);
function subpos_selectbox_change(){
$('#subpos').change(update_position_number);
}
function update_position_number(){
var subpos=$('#subpos').attr('value');
$.get('get_list.php?subpos='+subpos, show_posnumbers);
}
function show_posnumbers(ss){
$('#position_number').html(ss);
}
</script>
get_list.php
switch($_REQUEST['subpos']){
case 'AO2';
$teamQuery = "SELECT * FROM establishment_positions WHERE position_filled='0' AND active='1' AND position_acrynom='AO2'";
break;
case 'AO3';
$teamQuery = "SELECT * FROM establishment_positions WHERE position_filled='0' AND active='1' AND position_acrynom='AO3'";
break;
case 'AO4';
$teamQuery = "SELECT * FROM establishment_positions WHERE position_filled='0' AND active='1' AND position_acrynom='AO4'";
break;
case 'AO5';
$teamQuery = "SELECT * FROM establishment_positions WHERE position_filled='0' AND active='1' AND position_acrynom='AO5'";
break;
case 'AO6';
$teamQuery = "SELECT * FROM establishment_positions WHERE position_filled='0' AND active='1' AND position_acrynom='AO6'";
break;
case 'AO7';
$teamQuery = "SELECT * FROM establishment_positions WHERE position_filled='0' AND active='1' AND position_acrynom='AO7'";
break;
case 'AO8';
$teamQuery = "SELECT * FROM establishment_positions WHERE position_filled='0' AND active='1' AND position_acrynom='AO8'";
break;
case 'SO1';
$teamQuery = "SELECT * FROM establishment_positions WHERE position_filled='0' AND active='1' AND position_acrynom='SO1'";
break;
}
echo '<select name="pos_number" id="pos_number">';
$ss = null;
$result = mysql_query($teamQuery);
while($row = mysql_fetch_array($result))
{
$ss.= '<option value=' . $row['position_id'] . '>' . $row['position_number'] . '</option>';
}
echo $ss;
echo '</select>';
..这里是 Javascript 开始工作之前的 html 代码:
<div class="newusr">
<table>
<form id="newusr" action="includes/insertuser.php" method="post">
<tr><td>First Name: </td><td><input type="text" name="firstname"></td></tr>
<tr><td>Middle Name: </td><td><input type="text" name="middlename"></td></tr>
<tr><td>Last Name: </td><td><input type="text" name="lastname"></td></tr>
<tr><td>Username: </td><td><input type="text" name="usr"></td></tr>
<tr><td>sex:</td><td><select name="sex"><option value="1">Male</option><option value="0">Female</option></select></td></tr>
<tr><td>Position: </td><td><select name="subpos" id="subpos"><?php echo $subpos; ?></select><td></tr>
<tr><td>Position No: </td><td id="position_number"><select name="pos_number"><option value="">choose a Position first</option></select></td></tr>
<tr><td>Contractor: </td><td><input type="checkbox" name="contractor" value="1"></td></tr>
<tr><td>Start date: </td><td><input type="date" name="empStrtDte"></td></tr>
<tr><td>Active: </td><td><input type="checkbox" name="active" value="1"></td></tr>
<tr><td><?php echo '<input type="submit"><input type="reset" value="Reset"></td></tr>'; ?>
</form>
</table>
</div>
我更改 subpos 中的值后的 HTML 代码(来自 Chrome):
<select name="subpos" id="subpos">
<option value="AO2">AO2</option>
<option value="AO3">AO3</option>
<option value="AO4">AO4</option>
...
</select></td>
<select name="pos_number" id="pos_number">
<option value="2">805620121</option>
<option value="10">805678998</option>
</select>
一切看起来都很好,这正是我现在想要的。然后我打印数组和繁荣,错过了pos_numbe
r 值,我不知道为什么。
Array
(
[firstname] => test
[middlename] => test
[lastname] => test
[usr] =>
[sex] => 1
[subpos] => AO3
[empStrtDte] => 2012-02-19
)