我有一个使用PHP从mySQL数据库填充的下拉列表。如何预先选择下拉轴中的第一个选项,这些值可能并不总是相同?
这是我的HTML中的代码:
function loadparameters(selobj, url, nameattr) {
$(selobj).empty();
$.getJSON(url, {}, function (data) {
$.each(data, function (i, obj) {
$(selobj).append($("</option><option>
</option>").val(obj[nameattr]).html(obj[nameattr]));
});
});
}
$(function () {
loadparameters($('select#parameterType').get(0),
'GetParameter.php?GetParameter=parameterType', 'parameterType');});
..和PHP脚本:
<?php
if(!empty($_GET['GetParameter']))
{
$list = $_GET['GetParameter'];
$qry='';
switch($list)
{
case 'parameterType':
{
$qry = "SELECT parameterType FROM Parameters";
break;
}
}
if(empty($qry)){ echo "invalid params! "; exit; }
$dbconn = mysql_connect('*******','*******','******')
or die("DB login failed!");
mysql_select_db('*****', $dbconn)
or die("Database does not exist! ".mysql_error($dbconn));
$result = mysql_query($qry,$dbconn)
or die("Query $qry failed! ".mysql_error($dbconn));
$rows = array();
while($rec = mysql_fetch_assoc($result))
{
$rows[] = $rec;
}
mysql_free_result($result);
mysql_close($dbconn);
echo json_encode($rows);
}
?>
答案 0 :(得分:2)
您的代码中唯一出现错误的是此行
$(selobj).append($("</option><option></option>").val(obj[nameattr]).html(obj[nameattr]));
为什么关闭/打开/关闭选项标签?
不应该那样吗? (我为了可读性而缩进了代码)
$(selobj).append(
$("<option></option>") // only open/close tag
.html(obj[nameattr]) // this injects HTML
);
OR
$(selobj).append(
$("<option></option>") // only open/close tag
.text(obj[nameattr]) // this only injects text
);
如果你解决了这个问题,那么应该预先选择第一个选项。未预先选择它的原因是因为您的浏览器可能会自动使用空选项自动解决此问题。
另外,我发现下面的语法更具可读性:
var option = $("<option></option>").text(obj['nameattr']);
$(selobj).append(option);