Php 在动态填充的下拉列表中预选第一个选项

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) {

我有一个使用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');});
函数加载参数(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);