【发布时间】:2018-08-03 14:55:04
【问题描述】:
我已经阅读了很多关于此的不同文章,包括 https://www.9lessons.info/2010/08/dynamic-dependent-select-box-using.html 和 http://blog.chapagain.com.np/using-jquery-ajax-populate-selection-list/
但这对我不起作用,我不知道为什么。
HTML
div class="col-sm-6">
<label for="selectComplvl" class="regions" >Region</label></div>
<div class="col-sm-6">
<select class="form-control levelbox" id="region" value="" name="region">
<option value="base">---Select---</option>
<?php
$region_sql = "SELECT * FROM `regions`";
$region_res = mysqli_query($con, $region_sql);
if(mysqli_num_rows($region_res) > 0){
while($region_row = mysqli_fetch_array($region_res)){
echo "<option value='".$region_row[id]."'>".$region_row[region]."</option>";
}
}
?>
</select>
<div class="help-block with-errors"></div>
</div>
</div>
</div>
<div class="form-group col-sm-3">
<div class="row">
<div class="col-sm-6">
<label for="compEntered" class="comp">compeition Entered</label></div>
<div class="col-sm-6">
<select class="form-control" id="compEntered" name="compEntered">
<option value="base">Please choose a Region</option>
</select>
<div class="help-block with-errors"></div>
</div>
</div>
</div>
</div>
getcomp.php
<?php
if($_POST['id'])
{
$id=$_POST['id'];
$sql=mysqli_query("select * from comp_entered where region_id='$id'");
while($row=mysqli_fetch_array($sql))
{
echo '<option value="'.$row['region_id'].'">'.$row['comp_entered'].'</option>';
}
}
?>
JS
$(document).ready(function(){
$("#region").change(function()
{
var id=$(this).val();
var dataString = 'id='+ id;
$.ajax
({
type: "POST",
url: "getcomp.php",
data: dataString,
cache: false,
success: function(html)
{
$("#compEntered").html(html);
}
});
});
});
表格区域
| 身份证 | 地区 |
| 1 |中美洲 |
| 2 |大西洋中部 |
| 3 |美国南部 |
TABLE comp_entered
| 身份证 | region_id | comp_entered |
| 1 | 1 |补偿 |
| 2 | 1 |补偿 |
| 3 | 2 |比较 C |
| 4 | 2 |压缩 |
| 5 | 3 |比较|
| 6 | 3 |比较 F |
我的代码有什么问题?完成这项工作的最佳方法是什么?
【问题讨论】:
-
在 getcomp.php 中立即回显,只有第一个元素会返回给 AJAX 调用。组装html元素的字符串,然后在while循环外返回变量
-
不要只说“它不工作”。 以什么方式它不起作用?预期/期望的结果是什么?实际/不希望的结果是什么?您是否收到任何错误(检查您的 JS 控制台以及服务器日志)?如果是这样,确切的错误是什么?你得到的输出与你期望的不匹配吗?你已经做了哪些调试?
-
你有php错误日志吗?派上用场
-
首先从
<select class="form-control levelbox" id="region" value="" name="region">中删除value=""您的代码也容易受到sql 注入攻击。尝试使用准备好的语句 -
@quirimmo 这是一个错误的陈述。如果直接请求,PHP 会像通常那样生成 html。当 PHP 脚本结束时,Ajax 将使用 PHP 的完整输出。因此,在循环内部循环和回显对于 ajax 调用来说是完全有效的 html 生成。
标签: javascript php jquery html mysqli