0

我有一个使用 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);
}
?>
4

1 回答 1

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

或者

$(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);
于 2013-03-13T21:58:10.713 回答