【问题标题】:No option in a dynamic dependant drop-down list after form submission表单提交后动态依赖下拉列表中没有选项
【发布时间】: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"

到这里为止,一切都很好。

我需要的是:

  1. 记住id="dd-1" 中的用户选择。 完成
  2. 根据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


【解决方案1】:

你有两个选择,我不知道哪个最好,因为我没有查看完整的代码库。

选项 1:在您检查要设置的 dd1 后发布后,您在 php.ini 中添加另一个检查 dd2。

<?php 
if (isset($_POST['dd-1']) {
    /* populate dd-2 based on dd-1 value*/
}
?>

选项 2:添加将 dd2 填充到页面加载的逻辑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-25
    • 1970-01-01
    • 2017-11-22
    • 1970-01-01
    • 2023-03-14
    • 2020-11-23
    • 1970-01-01
    • 2014-08-07
    相关资源
    最近更新 更多