【发布时间】:2014-06-26 07:48:46
【问题描述】:
我知道很多人以前都问过这个问题,但我无法得到与我的问题类似的确切解决方案。
我有一个名为 Category 的下拉列表和另一个下拉列表,而不是一个名为 Grade 的子下拉列表。 当我选择一个类别(假设我从收音机、洗衣机、DVD 播放器等中选择电视)时,该类别的相应等级(比如说电视 - 索尼、日立、三星、飞利浦 ..)应该填充在等级下拉菜单。但是类别和等级都是从数据库中获取的,并且查询运行良好。
AJAX:-
<script>
function getGradeDetails(category){
if(category!==""){
var request = $.ajax({
url: "../controller/sales.php",
type: "POST",
data: {category:category,action:'get_grade_details'},
dataType: "json"
});
request.done(function(json_return){
//alert(json_return['grade_desc']);
$( "#grade" ).append( "<option>"+json_return['grade_desc'] </option>" );
});
request.fail(function(jqXHR, textStatus) {
alert( "Request failed: " + textStatus );
return false;
});
}
else{
$("#grade").append('<option></option>');
}
}
</script>
HTML:-
<td>Category
<select name="category" id="category" onchange="getGradeDetails(this.value)">
<option></option>
<?php
require_once '../model/sales.php';
@$result=Sales::getAllCategories();
while($value= mysql_fetch_assoc($result)){
?>
<option value="<?php echo $value['category_code']; ?>">
<?php echo $value['category_desc'] ?>
</option>
<?php } ?>
</select>
</td>
<td>Grade
<td>
<select id="grade">
</select>
</td>
控制器:-
<?php
require_once '../model/sales.php';
$action=$_REQUEST['action'];
switch($action){
case 'get_grade_details':
getGradeDetails();
break;
default :
break;
}
function getGradeDetails(){
$category=$_POST['category'];
require_once '../model/sales.php';
$obj=new Sales();
$result=mysql_fetch_assoc($obj->getGradesForCategory($category));
echo json_encode($result);
exit;
}
?>
根据此代码,成绩上的下拉值确实只从数据库中获取第一个值。例如:-只有索尼,它避免了其他-日立,三星等。 此外,当我更改另一个类别(例如:-洗衣机)时,Grade 下拉菜单的值 Sony(TV Grade),LG(Washing Machines Grade)。
我想要的是:-
1) 这些值应该作为一个整体出现,而不仅仅是来自数据库的第一个/单个值。
2)当我更改类别(电视到洗衣机)时,不应出现与电视相关的值(索尼),而只会出现与洗衣机有关的值(LG)。
【问题讨论】: