我正在尝试编写一个php脚本,该脚本将根据主要下拉菜单的选择填充第二个下拉菜单。我想用jquery来做所有非页面刷新的东西。但是我发现存在的所有东西都很难理解和修改,你知道任何写得好但易于理解的东西,或者是那里存在的教程吗?
答案 0 :(得分: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'
);
});
});
答案 1 :(得分:2)
有很多关于如何在网络上执行此操作的示例,一个来自Remy Sharp的好here的博客(full example here)
基本上你正在做的是在你的服务器上调用一个PHP页面,其中包含你的第一个下拉列表的值。例如,如果您的第一个下拉列表是美国的州名列表,则您的第二个下拉列表可能会显示处于所选州的城市。当选择第一个下拉列表时,它的onChange
事件会触发对服务器上PHP页面的请求,并传递州名称(example.com/city_lookup.php?state=NY
)
JQuery然后从city_lookup
脚本接收响应(JSON encoded可能是最好的方法),然后循环遍历它并将值写入第二个下拉菜单。 / p>
答案 2 :(得分: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'
);
});
});
答案 3 :(得分:0)
两种不同的方式: