2011-08-28 39 views
0

可能重复:
How to dynamically populate options on dropdown lists based on selection in another dropdown?自动填入下拉

我有MySQL表看上去就像是

区表

id  | region 
------------------- 
1  | Region1 
2  | Region2 

.. 。

和学校表

id  | school 
------------------- 
1  | schno1 
1  | schno5 
1  | schno6 
2  | scho120 

有我在登记表多选(下拉)菜单。区域下拉看起来像

<td> 
<select name="region" id="region"> 
<option value="">Region</option> 
<?php 
$result=$db->query("SELECT * FROM regions"); 
while($row=$result->fetch_array(MYSQLI_BOTH)) 
{ 
    echo '<option value="'.$row[0].'">'.$row[1].'</option>'; 
    } 
?> 
</select> 

</td> 
<td> 
<div id="sch_dropdown"> 
<select name="school" id="school"> 
<option value="">School</option> 
</select> 
</div> 
<span id="loading"><img src="core/design/img/jquery-ui/loading.gif" width="16" height="16" align="absmiddle">&nbsp;Loading...</span> 
<div id="no_sch">No schools found</div> 
</td> 

我想根据以前的选择填充新的下拉列表。我想要做的是,获取“地区”ID,然后从“学校”表中随时填入基于ID(先前选择的ID)的学校下拉菜单。这是我的代码,但它不起作用。

我的JS看起来像

$(document).ready(function(){ 

function populate() { 

     fetch.doPost('core/code/includes/search.php'); 

} 

$('#region').change(populate); 

var fetch = function() { 

var schools = $('#schools'); 
return { 
    doPost: function(src) { 

    $('#loading').show(); 
    $('#sch_dropdown').hide(); 
    $('#no_sch').hide(); 


     if (src) $.post(src, { region_code: $('#region').val() }, this.getschools); 
     else throw new Error('No SRC was passed to getCounties!'); 
    }, 

    getschools: function(results) { 
     if (!results) return; 
     schools.html(results); 

    $('#loading').hide(); // Hide the Loading... 
    $('#sch_dropdown').show(); // Show the drop down 
    } 
} 
}(); 

populate(); 

}); 

和search.php中

if(isSet($_POST['region_code'])) { 
$res=$db->query("SELECT * FROM schools WHERE id='".$_POST['region_code']."'"); 
while ($row = $res->fetch_array(MYSQLI_BOTH)) { 
echo '<option value="'.$row[0].'">'.$row[1].'</option>'; 
} 
} 

请帮我完成它。 Thx提前。

+0

@Tural Teyyuboglu看看我的编辑答案 –

+0

请人帮我得到它的工作 –

回答

1

你打电话getschools()没有参数,所以它什么都没有返回。您应该将POST请求发送到search.php文件后得到的结果。

编辑: 我不确定这会工作,因为我没有先测试它。但我认为你应该改变

if (src) $.post(src, { region_code: $('#region').val() }, this.getschools); 

if (src) $.post(src, { region_code: $('#region').val() }, function(data){ 
     getschools(data); 
    }); 
+0

您可以编辑我的错误的代码? –

+0

http://prntscr.com/2t8pt获取此错误 –

+0

尝试删除'this'关键字 –