1

要了解网络编程,我正在尝试一个简单的 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

另外,我认为<body id="body">应该运行下面的 JavaScript 是不是错了?它也永远不会运行。

那么,对于那些没有阅读所有内容的人:为什么我的 JavaScript 函数在事件触发时没有运行?onsubmit

4

2 回答 2

3

运行代码时出现以下解析错误:

Uncaught SyntaxError: Unexpected token return

Uncaught ReferenceError: mySubmit is not defined 

您错过了通话的结束)$.post这破坏了解析器。一旦你解决了这个问题,你会得到$ is undefined错误,直到你引用 jQuery。

http://jsfiddle.net/Z6hJK/

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

上面的函数被调用,但是当它被调用时,即使是 document.getElementById('product_type').value 也会给出错误(可能无法在您的浏览器上捕获),因为它 product_type 原来是 null,因为 body 中的 javascript 在之前执行浏览器已完全呈现页面。在它被调用的那一刻,product_type 还没有被渲染。

单击时,您的函数也会被调用,但这一次可能会失败,因为您没有对 Jquery 的引用。包括一个。

于 2013-07-12T18:27:45.433 回答