Php 在动态填充的下拉列表中预选第一个选项
我有一个使用PHP从mySQL数据库填充的下拉列表。我如何预选下拉列表中的第一个选项,记住这些值可能并不总是相同的 这是我的HTML中的代码:Php 在动态填充的下拉列表中预选第一个选项,php,javascript,jquery,Php,Javascript,Jquery,我有一个使用PHP从mySQL数据库填充的下拉列表。我如何预选下拉列表中的第一个选项,记住这些值可能并不总是相同的 这是我的HTML中的代码: function loadparameters(selobj, url, nameattr) { $(selobj).empty(); $.getJSON(url, {}, function (data) { $.each(data, function (i, obj) {
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');});
函数加载参数(selobj、url、nameattr){
$(selobj).empty();
$.getJSON(url,{},函数(数据){
$。每个(数据、功能(i、obj){
$(selobj).附加($)
val(obj[nameattr]).html(obj[nameattr]);
});
});
}
$(函数(){
loadparameters($('select#parameterType')。获取(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);
}
?>
代码中唯一错误的地方就是这一行
$(selobj).append($("</option><option></option>").val(obj[nameattr]).html(obj[nameattr]));
$(selobj).append($(“”).val(obj[nameattr]).html(obj[nameattr]);
为什么要关闭/打开/关闭选项标签
难道不是这样吗?(为了可读性,我已经缩进了代码)
$(selobj).追加(
$(“”)/仅打开/关闭标记
.html(obj[nameattr])//这将注入html
);
或
$(selobj).追加(
$(“”)/仅打开/关闭标记
.text(obj[nameattr])//这只注入文本
);
如果修复了此问题,则应预选第一个选项。未预选的原因是,您的浏览器可能会使用空选项自动修复此问题
此外,我发现下面的语法更具可读性:
var option = $("<option></option>").text(obj['nameattr']);
$(selobj).append(option);
var option=$(“”).text(obj['nameattr']);
$(selobj).append(可选);
作为一个轻微的替代:var option=$('',{text:obj['nameattr']}).appendTo(selobj)代码>我也喜欢你的语法,它在这里更有意义谢谢。我最初有这样一个语句:function loadparameters(selobj,url,nameattr){$(selobj).empty();$.getJSON(url,{},function(data){$(selobj).append($(selobj,url,nameattr){$(selobj).val(obj[nameattr]).html(obj[nameattr]);});}并且在我删除它时忘记取出关闭选项标记。
$(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);