在我的页面中,我有一个带有datalist属性和一个选择菜单(“Brand”)的输入(“Model”)。当用户从模型中选择数据列表的其中一个选项时,它将动态更改品牌选择菜单中的选项值。从数据库中调用Model和Brand的两个选项值。这是我到目前为止的代码;
<input type="text" name="type" id="type" list="datalist1" onchange="fw();"/>
<datalist id="datalist1">
<?php
$query9 = "SELECT DISTINCT model FROM server ORDER BY model ASC";
$result9 = mysql_query($query9);
while($row9 = mysql_fetch_assoc($result9))
{
echo '<option value="'.$row9['model'].'">';
} ?>
</datalist>
<select name="brand" id="test2"><option value="">-- Select Brand--</option></select>
脚本;
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
function fw()
{
var selname = $("#type").val();
$.ajax({ url: "getBrand.php",
data: {"brand":brand},
type: 'post',
success: function(output) {
document.getElementById('test2').options.length = 0;
document.getElementById('test2').options[0]=new Option(output,output);
// document.getElementById('test2').options[1]=new Option(output,output);
}
});
}
</script>
getBrand.php
<?php
define('DB_HOST1', 'localhost');
define('DB_NAME1', 'standby');
define('DB_USER1', 'root');
define('DB_PASS1', '');
$link = mysql_connect(DB_HOST1, DB_USER1, DB_PASS1);
if(!$link)
{
exit('Cannot connect to server "' . DB_HOST1 . '"');
}
mysql_select_db(DB_NAME1, $link) or die('Cannot use database "' . DB_NAME1 . '"');
if (isset($_POST['brand'])) {
$selname = $_POST['brand'];
$query = "SELECT * FROM server WHERE model='$brand'";
$res = mysql_query($query);
$aBrand= array();
while($rows = mysql_fetch_assoc($res)) {
$brand= $rows['brand'];
$aBrand[] = $brand;
echo $aBrand[0];
echo $aBrand[1];
}
} ?>
根据我编码的内容,我成功地动态更改了选择菜单,但存在一个问题。当从getBrand.php调用更多的数据时,选择菜单中的“输出”将所有数据合并为一行。例如,如果数据为“M3000”和“M4000”,则显示为“M3000M4000”。现在,我该如何拆分并将其作为普通的选择选项?
我还在学习Javascript,我希望这里有人能指导我。
注意:由于datalist属性
,该代码仅适用于Firefox答案 0 :(得分:1)
在php
返回的字符串中添加一个特殊字符PHP
elementcount=0;
while($row9 = mysql_fetch_assoc($result9))
{
if(elementcount>0)
echo '$<option value="'.$row9['model'].'">';//place a $ sign in start or you can for any special character
else
echo '<option value="'.$row9['model'].'">';
}
现在在javascript中
success: function(output) {
output = output.split("$");
document.getElementById('test2').options.length = 0;
//here now loop through the elements and add
for(var i=0,i<output.length-1)
document.getElementById('test2').options[0]=new Option(output[i],output[i]);
// document.getElementById('test2').options[1]=new Option(output,output);
}
答案 1 :(得分:1)
将您的数据从getBrand.php发送为
echo implode(“;”,$ aBrand);
这将生成一个类似M3000; M4000; M5000; M6000
的字符串并在您的java脚本代码中使用此代码将字符串分解为数组。
StrArr = Str.split(“;”);
这里'Str'是getBrand.php给出的输出,'StrArr'是包含你的品牌的数组。