【发布时间】:2017-06-24 14:08:24
【问题描述】:
所以,我有一个包含两个下拉列表的表单:id="dd-1" 和 id="dd-2"。
根据id="dd-1" 选择从数据库创建的id="dd-2" 选项;我正在使用id="dd-1" 中的onChange=getChildOf(this.value) 来做到这一点。
当用户在 id="dd-1" 中选择一个选项时,我运行一个 ajax 函数,它将 id="dd-1" 的值传递给 另一个 PHP 页面,在该页面运行 MySqli 查询,然后更新id="dd-2"。
到这里为止,一切都很好。
我需要的是:
- 记住
id="dd-1"中的用户选择。 完成 - 根据
id="dd-1"的提交 值获取id="dd-2"选项。 未完成
提交表单后,id="dd-2" 根本不显示任何选项。因此,我必须再次更改 id="dd-1" 中的选择,以便触发 ajax getChildOf(val) 函数!
所以,我需要你的帮助来完成 #2。
仅供参考:
id="dd-1" 选择下拉列表看起来像:
<select id="dd-1" name="dd-1" onChange="getChildOf(this.value)">
<option value="1" <?php if(isset($_POST['dd-1'])&&$_POST['dd-1']=='1'){echo 'selected';}?> >Option 1</option>
<option value="2" <?php if(isset($_POST['dd-1'])&&$_POST['dd-1']=='2'){echo 'selected';}?> >Option 2</option>
<option value="3" <?php if(isset($_POST['dd-1'])&&$_POST['dd-1']=='3'){echo 'selected';}?> >Option 3</option>
</select>
id="dd-2" 选择下拉列表看起来像:
<select id="dd-2" name="dd-2"></select>
ajax 函数:
function getChildOf(val)
{
$.ajax({
type:"POST",
url:"get_dd2_options.php",
data: 'parentid='+val,
success: function(data){
$("#dd-2").html(data);
}
});
}
get_dd2_options.php 页面看起来像这样:
<html>
<option value="-1">Please Select</option>
<?php
include_once('config.php');
// list all children
$q = mysqli_query($link, "SELECT * FROM table WHERE id = '".$_POST['parentid']."'");
while($r = mysqli_fetch_assoc($q))
{
$id = $r['id'];
$name = $r['name'];
?> <option value="<?=$id;?>" <?php if(isset($_POST['dd-2'])&&$_POST['dd-2']==$id){echo 'selected';}?> ><?=$name;?></option> <?php
}
?>
【问题讨论】:
-
您是在提交完整表单还是 ajax 帖子?如果是前者,您可以在再次显示表单之前检查 dd1 的值并在 PHP 中填充 dd2 吗?
-
@Russell 我正在提交完整的表单。
标签: javascript php jquery mysql ajax