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 に答える