1

Web プログラミングについて学ぶために、単純な html/javascript/php の「製品検索」ページを試しています。index.phpファイルは次のとおりです。

<html>
    <head>
        <title>Product Search</title>
        <script type="text/javascript">
            function mySubmit() {
                alert("submitting...");
                var product_type = $('product_type').value;
                $.post('product_search.php', { product_type: product_type }, function (data) {
                    alert("result = " + data); 
                    $('body').html(data);
                }
                return false;
            }
        </script>
    </head>
    <body id="body">
        <script type="text/javascript">
            mySubmit();
        </script>
        <form class="form" id="myform" method="post" onsubmit="javascript:return mySubmit();">
            Product Type:
            <input id="product_type" type="text" name="product_type"/>
            <br/><br/>
            <input id="submit" type="submit" value="Submit"/>
        </form>
    </body>
</html>

ファイルは非常にproduct_search.php小さいです。

<?php


$product_type = $_POST["product_type"];
echo "<h1>$product_type</h1>";

?>

onsubmit問題は、フォームに対してイベントが呼び出されないように見えることです。JavaScript の問題だと思いました (実行が許可されていないなど) が、イベントが呼び出されたときalertに呼び出す代わりにを実行すると、動作します!mySubmit()onsubmit

また、すぐ下の JavaScript を実行する必要があると考えるのは間違ってい<body id="body">ますか? どちらも実行されることはありません。

すべてを読んでいない人のために:イベントが発生したときに JavaScript 関数が実行されないのはなぜですか?onsubmit

4

2 に答える 2

3

コードを実行すると、次の解析エラーが発生します。

Uncaught SyntaxError: Unexpected token return

Uncaught ReferenceError: mySubmit is not defined 

パーサーを壊している呼び出し)の終了がありません。$.postそれを修正すると、$ is undefinedjQuery を参照するまでエラーが発生します。

http://jsfiddle.net/Z6hJK/

于 2013-07-12T18:25:51.450 に答える
0
<script type="text/javascript">
            mySubmit();
        </script>

上記の関数が呼び出されますが、それが呼び出されると、 document.getElementById('product_type').value でさえエラーが発生します (ブラウザーでキャッチすることが有効になっていない可能性があります)。ブラウザはページを完全にレンダリングしました。呼び出された時点では、product_type はまだレンダリングされていません。

クリックすると関数も呼び出されますが、今回は Jquery への参照がないため失敗している可能性があります。1 つを含めます。

于 2013-07-12T18:27:45.433 に答える