2015-07-13 68 views
0

我想在选择cat_id_1后用数据库值更新选择框sub_cat_id_1。我得到的结果是一个空白的框。在故障排除时,我发现javascript正在接收正确的id,并且在单独运行ajax_subcat.php文件时,它正确访问数据库并吐出正确的值。因此,我相当肯定,问题似乎在我的ajax代码的某处,只是不知道在哪里。Ajax/php/javascript选择框不更新

我很欣赏任何援助提前为此。

edit.php

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
 
<script type="text/javascript"> 
 
    function Cat_1_Change(category_id){ 
 
    var dataString = 'id='+ category_id; 
 
    $.ajax 
 
    ({ 
 
    type: "POST", 
 
    url: "ajax_subcat.php", 
 
    data: dataString, 
 
    success: function(result) 
 
    { 
 
     $(".sub_cat_id_1").html(result); 
 
    } 
 
    }); 
 

 
} 
 
</script>

edit.php(HTML)

<select name="cat_id_1" class="cat_id_1" onchange="Cat_1_Change(this.selectedIndex);"> 
 
<option selected="selected">--Select Category--</option> 
 
<option value="1".>Example 1</option> 
 
<option value="2".>Example 2</option> 
 
</SELECT> 
 
<select name="sub_cat_id_1" class="sub_cat_id_1"> 
 
<option>--Select Subcategory--</option> 
 
</select>

ajax_subcat.php

<?php require_once("db.php"); ?> 
<?php 
if($_POST['id']){ 
    global $database; 
    $id = $_POST['id']; 
    $sql="SELECT id, sub_cat_name 
      FROM subcategories 
      WHERE category_id='$id' 
     "; 
    $result = $database->query($sql); 
    while($row=mysqli_fetch_assoc($result)) 
    { 
     $response = '<option'; 
     $response .= 'value="'.$row['id'].'">'.$row['sub_cat_name'].'</option>'; 
    } 
} 
echo json_encode($response); 
?> 
+1

尝试在您的php中删除'json_encode',只需'echo $ response' – Neverever

+0

没有这样的运气。我已经试过,但回声“”;在.php文件中,它不显示。 – MiamiMoosh

+0

嗯...实际回声“”;现在正在工作...也许它是.php文件 – MiamiMoosh

回答

0

的问题是在php文件中缺少空间:

故障线路

$response = '<option'; 

更换

$response = '<option '; 
+0

加在一起。我很确定你的选择框只有1个选项。 – roullie