您正在寻找的是 AJAX。这可以使用直接的 javascript 或 jQuery 来实现(jQuery 更简洁,更易于使用)。
这是一个 jQuery 存根,让您了解必须发生的事情:
<script language="javascript">
$('#mySelect').change(function() {
$.post('backgroundScript.php', {
val: $(this).val()
}, function(data) {
$('#radioDiv').html(data);
});
});
</script>
如果您不熟悉 AJAX 和 jQuery,我将解释发生了什么。 $('#mySelect') 几乎相当于 javascript 的 getElementById() 函数。它们不具有相同的功能(jQuery 使用与 css 相同的符号来查找您要查找的元素),但这将返回带有 mySelect 作为其 id 属性的元素。
.change() 将 onChange 事件处理程序设置为括号内定义的function()。 $.post 是执行 AJAX 的 jQuery 简写 post(与 get 相对),无需加载页面即可发送到 backgroundScript.php。当 backgroundScript.php 返回 200 状态(即“一切正常,这是我的输出”)时,它将执行回调函数 function(data)。
backgroundScript.php 将接收 val 作为 $_POST 变量并执行“某些操作”来确定应显示哪些单选按钮,然后将输出写入屏幕。
编辑(更多信息):
如果您根据数据库确定单选按钮,
backgroundScript.php 应该看起来像这样。 请记住,这不是出于安全性或考虑已弃用功能(例如mysql_*)而编写的,而只是功能:
<?php
// backgroundScript.php
$masterVal = $_POST['val'];
$output = "";
$query = "SELECT bt.button_value, bt.button_label
FROM button_table as bt
WHERE bt.button_master_id = " . $masterVal;
$result = mysql_query($query);
while($row = mysql_fetch_array($result)) {
$output .= "<input type='radio' name='radioGroup' value='" .
$row['button_value'] . "' /> " . $row['button_label'];
}
echo $output;