我正在使用 JQuery Mobile、Javascript、HTML、JSON、AJAX、PHP 和 MySQL 将数据库中的值动态显示到网页上。
我有几个元素一起工作。首先是填充列表视图的下拉菜单。下拉菜单元素是从数据库中获取的。这是通过“on change”方法完成的,当被激活时,它会将选定的选项和下拉菜单的 ID 传递给 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 三次;一次在下拉列表的“onclick”函数中,另一个在通过单选按钮框中的“onchange”事件调用的 change_fruit_color 中。这就是问题所在。
我试图为我的一般问题制作一个示例,以便我编写更少的代码供大家阅读。任何有关如何进行的帮助将不胜感激!