如何根据另一个的选定项目过滤一个组合框集合?
Posted
技术标签:
【中文标题】如何根据另一个的选定项目过滤一个组合框集合?【英文标题】:How to filter one combo-box collection depending on the selected item of another? 【发布时间】:2011-10-20 16:37:08 【问题描述】:在表单的 php 页面上,一个组合框包含来自 mysql 表customer.
的客户列表,另一个组合框包含来自invoice
表的invoiceno
字段,分别对应于客户记录。
我想从第一个组合框中选择一个客户,并根据客户从第二个组合框中过滤 invoiceno。谁能帮我完成这个?
例如,如果我选择 customer1,第二个组合框应该显示所有 invoiceno
对应于 customer1。我想在不刷新、重新加载或发布页面的情况下执行此操作。如果我在 php 变量 $customer
中获得第一个选择,那对我来说就足够了。谢谢!
【问题讨论】:
【参考方案1】:AJAX 是你的朋友:
捕获第一个组合框的 onchange 事件
然后通过 AJAX 将选中项的值发送到你的 PHP 脚本
您的 PHP 脚本从数据库中加载相应的值并返回它们(例如 JSON 格式)
最后通过 javascript 显示/插入返回的数据。
伪代码:
JavaScript:
function displayData(json)
// Do something
document.getElementById("your-combobox").addEventListener("change", function()
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function()
if (xhr.readyState==4 && xhr.status==200)
displayData( JSON.parse(xhr.responseText) ); // Call displayData with the JSON
;
xhr.open("GET", "your-script.php?combobox1="+encodeURIComponent(this.value));
xhr.send(null); // Send AJAX request
);
PHP:
<?php
if (!isset($_GET['combobox1'])) exit('');
$data = GetDataFromDB_AsArray();
echo json_encode($data);
?>
【讨论】:
以上是关于如何根据另一个的选定项目过滤一个组合框集合?的主要内容,如果未能解决你的问题,请参考以下文章