php下拉菜单人口

我正在尝试编写一个php脚本,该脚本将根据主要下拉菜单的选择填充第二个下拉菜单。 我想用jquery来做所有非页面刷新的东西。 但是我发现存在的所有东西都很难理解和修改,你知道任何写得很好且易于理解的东西,或者是那里存在的教程吗?

这里有一些代码可以让您了解自己想要做什么:

HTML

  

PHP

  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(''); }); }, 'json' ); }); }); 

有很多关于如何在网上做到这一点的例子,Remy Sharp在他的博客上就是一个很好的例子(这里有完整的例子 )

基本上你正在做的是在你的服务器上调用一个PHP页面,它的值是你第一次下拉的时候。 例如,如果您的第一个下拉列表是美国的州名列表,则您的第二个下拉列表可能会显示处于所选州的城市。 当选择第一个下拉列表时,它的onChange事件会触发对服务器上PHP页面的请求,并传递状态名称( example.com/city_lookup.php?state=NY

然后,JQuery从city_lookup脚本接收响应( JSON编码可能是最好的方法),然后循环遍历它并将值写入第二个下拉菜单。

再添加一行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(''); }); }, 'json' ); }); }); 

两种不同的方式:

  • 使第一级触发AJAX查询,返回第二级所需的数据
  • 编写一个树结构,其中包含所有可能选择的所需数据,并将其隐藏在初始页面中Javascript可以读取的位置。 完成的HTML菜单(根据需要隐藏和显示)或JS部分中的大型JSON对象。