我正在尝试编写一个 php 脚本,该脚本将根据主下拉菜单的选择填充第二个下拉菜单。我想使用 jquery 来做所有非页面刷新的事情。但是我发现那里存在的每一件事都很难理解和修改,你知道有什么写得很好而且很容易理解的东西,或者那里存在的教程吗?
问问题
5884 次
4 回答
4
这里有一些代码可以让你了解你想要做什么:
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'
);
});
});
于 2009-02-07T00:24:47.437 回答
2
网上有很多关于如何做到这一点的例子,这里是 Remy Sharp 在他的博客上的一个很好的例子(完整的例子在这里)
基本上,您所做的是在您的服务器上调用一个 PHP 页面,并在更改时使用您的第一个下拉列表的值。例如,如果您的第一个下拉列表是美国的州列表,那么您的第二个下拉列表可能会显示所选州的城市。当第一个下拉菜单被选中时,它的onChange
事件会触发对服务器上 PHP 页面的请求,并传递状态名称 ( example.com/city_lookup.php?state=NY
)
JQuery 然后接收来自city_lookup
脚本的响应(JSON 编码可能是最好的方法),然后循环通过它并将值写入您的第二个下拉菜单。
于 2009-02-06T21:43:34.923 回答
2
再添加一行 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'
);
});
});
于 2011-06-15T07:22:21.610 回答
0
两种不同的方式:
- 使第一级触发返回第二级所需数据的 AJAX 查询
- 为所有可能的选择编写一个包含所有所需数据的树形结构,并将其隐藏在初始页面中您的 Javascript 可以读取它的某个位置。完成的 HTML 菜单(根据需要隐藏和显示)或 JS 部分中的大 JSON 对象。
于 2009-02-06T21:43:12.863 回答