1

選択タグのあるフォームがあります。ドロップダウンから項目を選択すると、残りのフォームフィールドにそれに応じて入力する必要があります。すべてのフォームデータはmysqlデータベースから取得されることに注意してください。以下は私のコードです:

    <script language="javascript" type="text/javascript">
            function populateData($id)
            {
                alert('in populateData');
                y = document.getElementById("selectCard");
                document.getElementById("to_address").value = to_address[y.selectedIndex];
                document.getElementById("subject").value = subject[y.selectedIndex];
                document.getElementById("email_content").value = email_content[y.selectedIndex];
            }
    </script>
    <body>
        <?php
            mysql_connect("localhost", "someUser", "password") or die("Connection Failed");
            mysql_select_db("mns")or die("Connection Failed");
            $query = "SELECT * FROM table";
            $result = mysql_query($query);
        ?>              
        <select id="selectCard" class="dropdown" onchange="populateData($id)">
            <?php
                while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
            ?>  
            <option value="<?php echo $line['source_name'];?>"> <?php echo $line['source_name'];?>
            <?php
                $id = $line['source_id'];           
                $source_name = $line['source_name'];
                $source_email = $line['source_email'];
                $phone_no = $line['source_id'];
                $disteller_function = $line['disteller_function'];
                }
            ?>
        </select>               
        <P><INPUT ID="to_address" TYPE="TEXT" NAME="to_address" SIZE="25"></P>    
        <P><INPUT ID="subject" TYPE="TEXT" NAME="subject" SIZE="25"></P>         
        <P><INPUT ID="email_content" TYPE="TEXT" NAME="email_content" SIZE="500"></P>         
        <P><INPUT TYPE="SUBMIT" VALUE="Submit" NAME="B1"></P>                       
    </body>

'$ id'をパラメーターとして渡すと、' populateData($ id)'関数が呼び出されません。パラメーターを削除すると、コードは機能しますが、残りのフォームフィールドに'undefined'が表示されます。

どんな助けでも大歓迎です。

ナナシ

4

2 に答える 2

2

まず、populateData()関数内のどこでも使用していないため、パラメーター$idを渡すのは奇妙に思えます。たぶん、あなたはあなたのコードを再チェックして、それがあなたのデザインと一致するかどうか、あなたが本当にやりたいこと、そしてそれがどのように行われるべきかを見るべきです。

呼び出しが機能しない理由は、PHP変数は最初から始める必要があり$ますが、Javascript変数はそうではなく、最も重要なことです。クライアント側のJavascriptコードでサーバー側のPHPスクリプト変数への参照だけを持つことはできません。PHPサーバー側スクリプトにPHPスクリプト変数の値を、ユーザーのブラウザがクライアント側で受信して実行するHTML + Javascriptコードの関数呼び出しの$idパラメータとしてエコー(出力)させる必要があります(単一のなしで実行できます)が数値であり、それを数値として)に渡したいid場合は引用符で囲みます。$idpopulateData()

関数宣言のパラメーターから$を削除し、$id一重引用符で囲んだPHPタグの間に設定して、HTML出力で呼び出す関数に文字列パラメーターとしてエコーします。

function populateData(id){
...
}
...
<select id="selectCard" class="dropdown" onchange="populateData('<?php echo $id; ?>')">

また、ブラウザで開いたJavascriptコンソール(つまり、Web開発者->WebコンソールまたはFirefoxのCTRL+ SHIFT + K)でテストすることをお勧めします。これは、このような将来のバグをその場で追跡するのに役立ちます。

于 2012-11-05T13:18:58.853 に答える
0

@elcodedocle、まず最初にそれを調べてくれてありがとう。上記の解決策は私にはうまくいきませんでしたが、私は次のようにそれをやり遂げました、

function populateData(id){
...
}
...
<select id="selectCard" class="dropdown" onchange="populateData(this.value)">

すべてのパラメータを値タグに追加しました。そして、あなたは正しいです、php変数をjavascript関数に渡すことはできません。

もう一度ありがとう、

ナナシ

于 2012-11-07T05:01:08.857 に答える