0

編集:

SQL

$valuefromjs = $_REQUEST['var'];
$result6 = "SELECT DISTINCT $valuefromjs FROM persons ORDER BY $valuefromjs ASC";
$result7 = mysql_query($result6);
$num = mysql_num_rows($result7);  

$dataRanges[0] = array('dataRanges');       
        for ($i=1; $i<($num+1); $i++)
        {
        $dataRanges[$i] = array( (int) mysql_result($result7, $i-1) );
        }

echo json_encode($dataRanges);

HTML

<select id="combo2" class="combo" data-index="2"></select>

jQuery

$('#1combo').on('change', function () {
var jsonVar = $.ajax({
url : "visits/comboquery.php?var="+$(this).val(), 
dataType: "json",
async: false,
success: function(response) {
}
}).responseText;
for (var i=1; i<objVar.length;i++)
    {
    $('#combo2').html("<option value="+objVar[i]+">"+objVar[i]+"</option>");
    }
});

質問:

クエリ結果の配列があります。今、結果がコンボ 2 オプションである必要があります。何が問題なのですか?

4

2 に答える 2

0

問題を解決するには、AJAX を使用する必要があります。コンボ1のonChangeで、サーバーへのAJAX呼び出しを呼び出し、コンボ1の選択した値を送信します。次に、php コードで、AJAX リクエストから受け取った値を使用してクエリを実行し、文字列のオプションを使用して新しいコンボ ボックスを作成し、その文字列をエコー バックします。その AJAX 応答を使用して、新しいコンボ 2 を設定できます。

于 2013-01-08T17:54:52.793 に答える
0

私の理解では、combo1 からの選択により、combo2 を構築するために実行するクエリが定義されます。

問題: コンボ 2 を構築するための PHP はサーバー側で解析されます。つまり、ページがユーザーのブラウザーに到達し、JavaScript が実行を開始するまでに、PHP コードは常に実行を終了します。

秒のコンボを生成できる可能性のあるクエリのセットが有限である場合 (combo1 には有限数のオプションがあるため、これが当てはまるはずです)、それらすべてを異なる ID で作成し、それらを非表示に保つことができます (css 「表示:なし」)。

<select id="firstCombo2" class="combo2">
    ...
</select>
<select id="secondCombo2" class="combo2">
    ...
</select>

これで、ユーザーがコンボ 1 から選択するときに、非表示のコンボ 2 のどれを表示するかを決定できます (css "display: block")。

$('select#combo1).on("change", function(){
    $('select.combo2').css('display','none'); //hide all combo2's
    if($(this).val()=='Opt1'){
            $('select#firstCombo2').css('display','block');
    }else if($(this).val()=='Opt2'){
            $('select#secondCombo2').css('display','block');
    }
}
于 2013-01-08T15:51:59.027 に答える