Javascript函数的参数是单词“Array”而不是mySQL行

时间:2018-01-09 00:41:49

标签: javascript php html mysql

看来我正面临一个共同的问题,但我没有设法在我的代码上解决它。

我想做什么: 我已经创建了一个数据库,我目前正在使用一个简单的UI来更新它。所以,我用

  1. 一个由mySQL表填充的下拉菜单
  2. 某些表单的值会根据下拉选项进行相应更改。
  3. 代码(简化一点):

    <html>
    <body>
        <form method="post">
            <select class="dropdown" id="dropdown_id" onChange='fillFun(this.value)' >
                <option disabled selected value style="display:none"> -- select an option  -- </option>
                <?php
                    //stuff pdo connection 
                    $pdo = new PDO("mysql:host=$servername;dbname=myDatabase", $user, $password);
                    try
                    {
                        $result = $pdo->query("SELECT * FROM dbTable");
                        foreach($result  as $row)
                        {
                            echo '<option value="'.$row.'"';
                            echo '>'. $row['last_name'].' '. $row['first_name'].'</option>'."\n";
                        }
                    }
                    catch(PDOException $e) { echo 'No Results'; }
                ?>
            </select >
        </form>
    
        <form id="forms" action="results.php" method="post">
            Last Name:      <input type="text" id="last_name" /><br><br>
            First Name:     <input type="text" id="first_name" /><br><br>
            <input type="submit" />
        </form>
    
        <script>
            function fillFun(fill)
            {   
                document.getElementById('last_name').value = fill[1];
                document.getElementById('first_name').value = fill[2];
            }
        </script>
    <body>
    

    问题:

    this.value = "Array"
    

    经过一番研究后,我发现了一些类似问题的问题。(对于instace this one) 问题是我不能(或者不知道如何,确切地说)应用给定的解决方案print_r()var_dump(),因为我正在回应一个选项值。解决类似问题的另一种方法是使用json_encode()但在更改

    之后
    onChange='fillFun(this.value)'
    

    onChange='fillFun(json_encode(this.value))'
    

    问题没有解决。相反,现在似乎fill参数为null。(更改时没有任何反应)。

    我在这里缺少什么?谢谢。

1 个答案:

答案 0 :(得分:0)

您可以将this.value对象传递给event函数,而不是引用fillFunc,而是通过event.target.value获取值。

因此fillFunc将更新为:

fillFunc(event) {
   document.getElementById('last_name').value = event.target.value[1];
   document.getElementById('first_name').value = event.target.value[2];
}

将事件传递给您的onchange处理程序。

<select onchange="filFunc(event)"></select>