首先,请原谅我,如果我(似乎)重复在此网站(或网上的其他地方)已经回答过的问题。我来自R& D(C ++)背景,是Web开发的新手;但通常我会很快得到答案,但这个特殊的问题令我感到困惑。
提前感谢你所有的时间。
我有一个简单的网页(表单),用户输入简单的详细信息,并使用PHP将记录存储在MySQL数据库中。此DB中有许多表,其中两个用于动态填充两个下拉选择列表(HTML控件)。
填充第一个下拉列表工作正常。第二个是基于第一个下拉列表中的选择来填充。
两个下拉列表都从SQL查询中获取数据。
经过半天扫描这个网站和大约10个不同的网站,关于AJAX,Javascript,PHP等 - 我还没有找到解决方案,而我的小项目(我今晚才被接受),将于明天中午完成!
所以,我的挑战是,我不能 - 在我的生活中 - 找到一种方法来使用AJAX(今天晚上才开始使用它!)或任何其他网络技术,填充第二个下拉列表,来自MySQL表中的数据。
代码类似于:
<select name="listDevices" id="listDevices"
onchange="$('#brands').load('populateBrands.php?nID=1'); "
title="<?php echo ucfirst($row_DevicesRec['de_name']); ?>">
<?php
do {
?>
<option value="<?php echo $row_DevicesRec['de_name']?>"><?php echo $row_DevicesRec['de_name']?></option>
<?php
} while ($row_DevicesRec = mysql_fetch_assoc($DevicesRec));
$rows = mysql_num_rows($DevicesRec);
if($rows > 0) {
mysql_data_seek($DevicesRec, 0);
$row_DevicesRec = mysql_fetch_assoc($DevicesRec);
}
?>
</select>
</label></td>
</tr>
<tr valign="baseline">
<td height="121" align="right" nowrap="nowrap">
<div align="left" class="style3 style3" >Brands</div>
</td>
<td><label>
</label>
<label><br />
<select name="brands" id="brands">
</select>
<br />
</label></td>
其中,&#34;品牌&#34;是第二个下拉列表的ID字段。
将代码添加到第一个下拉列表的"OnChange"
事件处理程序中。对?对!现在,对于我的生活,我无法找到一种方法来使用AJAX .load(或任何其他)函数来调用我的PHP文件,这将动态创建&#34; SELECT下拉列表控件并填充它。
现在..我知道这已被处理,但我不相信,它已被充分理解 - 由于混合HTML,Javascript,PHP和现在的AJAX ......所有在一个源文件中的复杂性! (所以,请原谅我的无知,如果可以,请帮助我。)
我哪里错了???? 谢谢你们。
答案 0 :(得分:0)
据我所知,主要问题似乎是你总是在调用populateBrands.php?nID=1
- 如果其他一切都正常工作,你的第二个下拉列表将始终包含相同的元素,就好像第一个项目一样选择第一个下拉列表。
要解决这个问题,你需要让它找到必要的ID作为AJAX调用的GET参数,所以像这样:
onchange="$('#brands').load('populateBrands.php?nID=' + $('#listDevices').val());"
这将获取第一个选择框的值,并将其作为参数传递给PHP脚本,而不是始终使用“1”。
但是,为了实现这一点,您可能需要确保第一个下拉列表的值将ID作为其值而不是名称(除非您可以使用populateBrands.php
可靠地使用它。
目前你有这个:
<option value="<?php echo $row_DevicesRec['de_name']?>"><?php echo $row_DevicesRec['de_name']?></option>
根据您的数据,您可能需要将其更改为此类内容:
<option value="<?php echo $row_DevicesRec['de_id']?>"><?php echo $row_DevicesRec['de_name']?></option>
希望有所帮助。但是,如果没有任何工作(即你的第二个下拉列表根本没有填充),请在致电populateBrands.php?nID=1
时发布返回的内容,也许我可以帮助诊断。