【发布时间】:2010-10-06 01:16:06
【问题描述】:
我正在尝试编写一个 php 脚本,该脚本将根据主下拉菜单的选择填充第二个下拉菜单。我想使用 jquery 来做所有非页面刷新的事情。但是我发现那里存在的每一件事都很难理解和修改,你知道有什么写得很好而且很容易理解的东西吗?或者那里有教程吗?
【问题讨论】:
标签: php jquery drop-down-menu
我正在尝试编写一个 php 脚本,该脚本将根据主下拉菜单的选择填充第二个下拉菜单。我想使用 jquery 来做所有非页面刷新的事情。但是我发现那里存在的每一件事都很难理解和修改,你知道有什么写得很好而且很容易理解的东西吗?或者那里有教程吗?
【问题讨论】:
标签: php jquery drop-down-menu
这里有一些代码可以让你知道你想做什么:
HTML
<select id="state" name="state">
<option value="IL">Illinois</option>
<option value="IN">Indiana</option>
</select>
<select id="city" name="city">
<option value="">Please select a state...</option>
</select>
PHP
<?php
$cities = array(
'IL' => array( 'Chicago', 'Naperville', 'Decatur', 'Saint Charles' ),
'IN' => array( 'Gary', 'Miller', 'Portage', 'Merrillville' )
);
print json_encode( $cities[ $_POST[ 'state' ] ] );
exit;
?>
jQuery
jQuery(document).ready(function() {
jQuery('#state').change(function() {
jQuery.post(
'some-url.php',
{
'state':jQuery('#state').val()
},
function(data, textStatus) {
jQuery.each(data, function(index, value) {
jQuery('#city').append('<option value="' + value + '">' + value + '</option>');
});
},
'json'
);
});
});
【讨论】:
网上有很多关于如何做到这一点的例子,一个很好的例子here来自 Remy Sharp 在他的博客上 (full example here)
基本上,您所做的是调用服务器上的 PHP 页面,并在更改时使用您的第一个下拉列表的值。例如,如果您的第一个下拉列表是美国的州列表,那么您的第二个下拉列表可能会显示所选州的城市。当第一个下拉菜单被选中时,onChange 事件会触发对服务器上 PHP 页面的请求,并传递状态名称 (example.com/city_lookup.php?state=NY)
JQuery 然后接收来自city_lookup 脚本的响应(JSON encoded 可能是最好的方法),然后循环遍历它并将值写入您的第二个下拉菜单。
【讨论】:
再添加一行jQuery('#city').html('');
现在代码看起来像:
jQuery(document).ready(function() {
jQuery('#state').change(function() {
jQuery('#city').html('');
jQuery.post(
'some-url.php',
{
'state':jQuery('#state').val()
},
function(data, textStatus) {
jQuery.each(data, function(index, value) {
jQuery('#city').append('<option value="' + value + '">' + value + '</option>');
});
},
'json'
);
});
});
【讨论】:
两种不同的方式:
【讨论】: