3

同じディレクトリのテキストファイルに入力を生成できるHTMLとPHPファイルで記述されたフォームがあります。以前に別の単純なHTMLファイルでテストしましたが、機能しましたが、今はそれをより大きなHTMLファイルに適用しようとしていますが、どういうわけか機能せず、何が問題なのかわかりません。

Feedback.html:

<html>
<head>
        <script>
        function myFunction()
        {
            alert("Your feedback has been sent! Thank you");
        }   
        </script>
</head>
<body>
<div class="Linksediv">
    <h3>Feedback</h3>
    <p>Please enter your name and give us some feedback</p>
        <form action="form1.php" method="post">
            Name<input id="Email" size="30" type="text" name="field1"/><br/>
                <textarea id="pass" type="text" name="field2" rows="4" cols="24">Please give us some feedback
                    </textarea>
             <br/>
                <input type="button" name="submit" value="submit" id="buttonOk" onclick="myFunction()" value="Show alert box" />
        </form>

</div>
</body>
</html>

Form1.php

<?php
if(isset($_POST['field1']) && isset($_POST['field2'])) {                    //Check if fields are there in HTML file
    $data = $_POST['field1'] . ' - ' . $_POST['field2'] . "\n";             //output
    $ret = file_put_contents('data1.txt', $data, FILE_APPEND | LOCK_EX);    //file dir for data1.txt
    if($ret === false) {                                                    //check if anything was written down
        die('There was an error writing this file');
    }
    else {
        echo "$ret bytes written to file"."\n";
    }
}
?>

フォームで[送信]を押すと、アラートを含むポップアップのみが表示され、テキストファイルは書き込まれません。

4

2 に答える 2

4

次の行

<input type="button" name="submit" value="submit" id="buttonOk" onclick="myFunction()" value="Show alert box" />

type="submit"ではなくinputtype= "button"を作成するため、フォームは実際には送信されません。

また、クリックではなく投稿の後に成功メッセージを表示することを検討してください。ファイルが正常に書き込まれたときに、form1.phpスクリプトにエコーしてください。

于 2013-02-21T14:36:19.433 に答える
1

入力タイプをボタンから送信に変更した後、onclick ハンドラーに「return true」ステートメントを追加する必要がある場合もあります。false を返すと、送信ボタンがデフォルトのアクション (フォームの送信) を実行できなくなります。戻り値がない場合、動作は同じかもしれません。

function myFunction()
{
   alert("Your feedback has been sent! Thank you");
   return true;
} 
于 2013-02-21T14:42:16.567 に答える