Javascript Php脚本/java脚本,帮助放置两个双动态生成的下拉菜单
虽然我对php脚本并不陌生,但我确实有一个问题,就是为了这个目的而将它与JavaScript结合起来。 我有一个表单,包含一个类别下拉菜单,选择的类别修改了可用于子类别下拉菜单的选项。。。我已经能够用php和javascript实现这一点 我的问题是,在相同的形式下,无论何时选择州,都会动态生成州和城市下拉菜单,并且在子类别中选择的选项会被删除。 关于如何在同一页面上将这两个不同类别的下拉菜单组合在一起,有什么帮助吗 以下是与我的问题相关的主要代码Javascript Php脚本/java脚本,帮助放置两个双动态生成的下拉菜单,javascript,php,ajax,Javascript,Php,Ajax,虽然我对php脚本并不陌生,但我确实有一个问题,就是为了这个目的而将它与JavaScript结合起来。 我有一个表单,包含一个类别下拉菜单,选择的类别修改了可用于子类别下拉菜单的选项。。。我已经能够用php和javascript实现这一点 我的问题是,在相同的形式下,无论何时选择州,都会动态生成州和城市下拉菜单,并且在子类别中选择的选项会被删除。 关于如何在同一页面上将这两个不同类别的下拉菜单组合在一起,有什么帮助吗 以下是与我的问题相关的主要代码 function reload(form) {
function reload(form)
{
var val=form.cat.options[form.cat.options.selectedIndex].value;
var val1=form.location.options[form.location.options.selectedIndex].value;
self.location='reg_practice_details.php?cat=' + val + ''location=' + val1 ;
}
//下拉菜单的类别/子类别组的下拉代码
看起来您的javascript正在选择两个菜单。
-->不是这样的
有一些拼写错误,比如
self.location='reg_practice_details.php?cat=' + val + '&location=' + val1 ;
while循环中缺少的}
,以及其他一些
但除此之外,您要做的是:如果用户在cat
或state
下拉菜单上进行选择,则subcat
和city
下拉菜单应分别更改并仅提供适用的值
正如我所说,您正在刷新完整的表单(reload(this.form)
)以更改一个下拉菜单。您正在使用$\u GET
变量设置所选的
值。这些是从URL检索的,因此更改表单不会重新加载整个页面,因此不会拾取任何(新的)$\u GET
vars。(有趣的是,这个错误出现在所有在网络上浮动的执行器上。要么你的老师/教授犯了个错误,要么你不懂客户端/服务器端编程)
有两种可能的选择
让PHP将数据库结果回送到Javscript中(作为数组)。浏览器将获取这些结果,Javascript可以访问这些结果。然后使用javascript的onChange()方法检测对cat
和state
下拉菜单的任何更改,如果检测到,让javascript用子选项重新创建/重新填充正确的下拉菜单(因此city
或subcat
)
虽然这不是最好的,但却是最简单的
// Getting the data from Mysql table for first list box
$class_query=mysql_query("SELECT DISTINCT class_id,class FROM categories order by class");
// get all subcategories, we do the 'where class_id=$cat on the client-side
$subcat_query=mysql_query("SELECT DISTINCT subcategory FROM subcategories");
//Dropdown menu for state and city
$state_query=mysql_query("SELECT DISTINCT state_id,state FROM state order by state");
// get all the cities, we'll check for the state ( state_id=$location) client-side
// note that getting DISTINCT cities, means that if cities appear in more states,
// they're not fetched...
$city_query=mysql_query("SELECT DISTINCT city FROM city order by city");
?>
ajax调用将接收结果(显然您需要在该php文件中回送查询结果),您可以使用该结果(重新)填充下拉菜单。
由于每个浏览器/操作系统的AJAX实现各不相同,因此使用类似jQuery的库可以大大简化工作。(jQuery文档也很棒)
无论你选择哪个选项,这都会给你一些出发点。由于这是某种家庭作业的练习,所以我不会给出完整的代码;)(另外,没有PHP测试环境。)
有些事情需要考虑
- 过度使用了
@$var
。真的没有必要
抑制错误,所以不要:)李>
- 如果此代码来自教程,
另找一个。代码很明显是旧的,谷歌会返回问题
从2007年开始。在2007年,这个代码是如此,现在它是一个明确的禁忌
- 如果
如果您在此过程中遇到任何特定错误/问题,请搜索SO/google
或者创建一个新的特定问题
希望你现在能走得更远一点 欢迎来到SO,试着向我们展示一下你的尝试。我刚刚编辑了我的问题,加入了代码。谢谢,请阅读about页(),我看一下你的代码。你学习了一些关于SO的知识并获得了一枚徽章!(还有,我对你的帖子做了一些编辑…)我想知道是否有一种方法可以做到这一点而不必重新加载页面,因为我需要同一页面上的类别/子类别下拉菜单以及州/城市下拉菜单。。我愿意接受新的更好的方法。语法错误没有提供解决方案。。。求你了,我需要帮助谢谢你,@purepilture。。我一直在屏幕上等待你的帮助
// Getting the data from Mysql table for first list box
$class_query=mysql_query("SELECT DISTINCT class_id,class FROM categories order by class");
// get all subcategories, we do the 'where class_id=$cat on the client-side
$subcat_query=mysql_query("SELECT DISTINCT subcategory FROM subcategories");
//Dropdown menu for state and city
$state_query=mysql_query("SELECT DISTINCT state_id,state FROM state order by state");
// get all the cities, we'll check for the state ( state_id=$location) client-side
// note that getting DISTINCT cities, means that if cities appear in more states,
// they're not fetched...
$city_query=mysql_query("SELECT DISTINCT city FROM city order by city");
?>
<script type="text/javascript">
var class_array = Array();
var subcat_array = Array();
<?php
// prepare all dropdown menus.
// the output is written as javascript (JS) arrays
// as the browser loads the page, it reads the arrays as JS, and JS can use it
// position this somewhere in your <body>, after the queries, before the form
while($noticia2 = mysql_fetch_array($class_query)) {
echo "class_array = [" . $noticia2[class_id] . "] = " . $noticia2[class];
}
$n=0
while($noticia = mysql_fetch_array($subcat_query)) {
echo "subcat_array = [".$n."] = {
subcategory: \"" . $noticia[subcategory] . "\"
class_id: \"" . $noticia[class_id] . "\"}";
$n++;
}
?>
</script>
if(isset($cat) and strlen($cat) > 0)
{
$quer=mysql_query("SELECT DISTINCT subcategory FROM subcategories where class_id=$cat order by subcategory");
}
else
{
$quer=mysql_query("SELECT DISTINCT subcategory FROM subcategories order by subcategory");
}