PHP:将选定的列表值传递到同一页面中的另一个变量

时间:2017-07-14 07:49:13

标签: php jquery

我有一个表单,有两个列表框,并根据第一个列表中的选定字段,我必须从数据库中获取数据以创建第二个列表框。

我试图用post方法实现这一点,但无法理解为什么第二个列表没有填充数据......

PHP获取第二个列表框的数据

if (isset($_POST['val']))
{
    $value = $_POST['val'];
    $smt3 = $db->prepare('select floor from test where name_id =?');
    $smt3->execute(array($value));
    $HF_id = $smt3->fetchAll();
}

HTML列表框

<select class="Name" name="Profile_Name1" id="PC1"> 
            <option value="A">AA</option>
            <option value="B">BB</option>
            <option value="c">CC</option>
            <option value="d">DD</option>
</select>
        <label>Home Floor </label>
        <select name="Home_Floor" id="hfid">    <br />
            <option value="">Home_Floor</option>
                <?php foreach ($HF_id as $row){echo '<option value="' . $row['floor'] . '">' . $row ['floor'] . '</option>';}?>
</select>

Jquery的

$('#PC1').on('click', function() {
        $.post('user_info1.php', 'val=' + $(this).val(), function (response) {
     $.ajax({
        url: 'user_info1.php', //This is the current doc
        type: "POST",
        data: ({val: + $(this).val()}),
        success: function(data){
        }
    });        

1 个答案:

答案 0 :(得分:0)

您似乎希望post函数触发加载由URL参数指定的页面。

尝试以下内容:

HTML

<select class="Name" name="Profile_Name1" id="PC1"> 
    <option value="A">AA</option>
    <option value="B">BB</option>
    <option value="C">CC</option>
    <option value="D">DD</option>
</select>
<label>Home Floor </label>
<select name="Home_Floor" id="hfid">

</select>

loaddata.php

if (isset($_POST['val']))
{
    $value = $_POST['val'];
    $smt3 = $db->prepare('select floor from test where name_id =?');
    $smt3->execute(array($value));
    $HF_id = $smt3->fetchAll();
    $HF_array=array();
    foreach ($HF_id as $row)
    {
        $HF_array[]=$row['floor'];
    }
}
echo json_encode($HF_array);

的javascript / jquery的

jQuery('#PC1').on('click', function() {
    jQuery.ajax({
        url: 'loaddata.php', 
        type: "POST",
        data: ({val: + $(this).val()}),
        success: function(data){
            //data should come as JSON string in the form of ['item1','item2','item3'] use JSON.parse to convert to object:
            jQuery.each(JSON.parse(data), function(key, datavalue) {   
                jQuery('#hfid').append(
                    jQuery('<option>', { value : datavalue })
                    .text(datavalue)
                );//end of append
            });//end of each
        }//end of success function
    });//end of ajax datastruct and ajax call
});//end of on-click-function