JQuery Mobile、Javascript、HTML、JSON、AJAX、PHP、および MySQL を使用して、データベースの値を Web ページに動的に表示しています。
一緒に働くいくつかの要素があります。1 つ目は、リスト ビューにデータを入力するドロップダウン メニューです。ドロップダウン メニューの要素は、データベースから取得されます。これは、「変更時」メソッドを介して行われます。有効にすると、選択したオプションとドロップダウン メニューの ID が JSON 関数に渡されます。JSON 関数は、PHP と関数を使用してデータベースからデータを取得します。また、データベースから取得してリスト ビューに表示する結果のタイプに対するフィルターとして機能するラジオ ボタンもあります。
私の問題は、見た目よりも単純であることを願っています。ドロップダウン メニューから選択したオプションの値を JSON 関数に渡そうとしています。JSON がオブジェクトを必要としていることは知っていますが、これを行うのに問題があります。
これを行う方法を説明するために、果物のドロップダウン リスト、赤い果物または緑の果物から選択できるラジオ ボタン、および結果を表示するリスト ビューがあるとします。
<div data-role="fieldcontain">
<fieldset data-role="controlgroup" data-type="horizontal" data-mini="true">
<input type="radio" name="radio" id="red" value="1" checked="checked" onchange="change_fruit_color('red');"/>
<label for="red">Red Fruits</label>
<input type="radio" name="radio" id="green" value="2" onchange="change_fruit_color('green');"/>
<label for="green">Green Fruits</label>
</fieldset>
</div>
<li>
<label for="fruit" class="select">Fruits</label>
<select name="fruit" id="fruit" data-mini="true" onclick="populate_list('fruit', this);" onchange="clear_dropdown('fruit'); refresh_dropdown('fruit');">
<option value=""></option>
</select>
</li>
追加の関数がいくつかあることに注意してください。refresh_dropdown() と clear_dropdown() は、ドロップダウン リスト項目の更新を処理します。心配する必要はありません。populate_list 関数もうまく機能します。問題は、change_fruit_color() 関数のロジックに関するものです。
function change_fruit_color(fruit_color)
{
var selected_value = $("#fruits option:selected").text();
if(selected_value)
{
switch(fruit_color)
{
case "red":
populate_list('red', selected_value);
break;
case "practice":
populate_list('green', selected_value);
break;
}
clear_dropdown("fruit");
refresh_dropdown("fruit");
}
}
function populate_list(selected_fruit, this_menu)
{
var find_fruit_url = server_root_url + 'fruit/find_fruit.php';
var value = this_menu.options[this_menu.selectedIndex].value;
var params = {
control: selected_fruit,
value: value
};
$.ajax({
type: "POST",
url: find_fruit_url,
async:false,
data: params,
success: function(json){
json_populate(json, selected_fruit, value);
}
});
}
ご覧のとおり、populate_list を 3 回呼び出すことができます。1 つはドロップダウン リストの「onclick」関数内で、もう 1 つはラジオ ボタン ボックスの「onchange」イベントを介して呼び出される change_fruit_color 内です。ここに問題があります。
私は一般的な問題のサンプルを作成しようとしました。これにより、すべての人が読むコードを大幅に減らすことができます。続行する方法についてのヘルプは大歓迎です!