2013-07-12 2 views
1

Чтобы узнать о веб-программировании, я пытаюсь простую страницу html/javascript/php «поиск продукта». Вот index.php файл:JavaScript не запускается на событии onsubmit

<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?

+0

Вы получаете ошибки в консоли? Я бы предположил, что по вашему примеру, по крайней мере, '$ undefined'. – Mathletics

+0

Нет, ошибок нет. Почему я должен получить эту ошибку? Разве '' '' '' определяется jQuery как 'document.getElementById'? – feralin

+0

где ваша ссылка на jquery? – Guanxi

ответ

3

я получаю следующие ошибки синтаксического анализа, когда я запускаю код:

Uncaught SyntaxError: Unexpected token return 

Uncaught ReferenceError: mySubmit is not defined 

У вас не хватает закрытия ) на вашем $.post вызова, который нарушающего анализатор. Как только вы исправите это, вы получите ошибку $ is undefined, пока не будете ссылаться на jQuery.

http://jsfiddle.net/Z6hJK/

+0

Вы были правы насчет недостающих ');' - я добавил это, и теперь вызывается 'mySubmit();' работает! Однако я не получил ошибку '$ undefined', где бы я ее не увидел? – feralin

+0

Nevermind, нашел это :). Благодаря! – feralin

0
<script type="text/javascript"> 
      mySubmit(); 
     </script> 

выше функция вызывается, но, когда она вызывается, даже document.getElementById («product_type»). Значение дает ошибку (которая не может быть включен в вашем браузере, чтобы поймать), как это product_type оказываются нулевыми, поскольку javascript в теле выполняется, прежде чем браузер полностью отобразит страницу. В момент, когда он вызван, product_type еще не отображается.

При щелчке также ваша функция вызывается, но на этот раз может случиться, что она не работает, поскольку у вас нет ссылки на JQuery. включают один.

+1

«Я был бы благодарен, если кто-нибудь сможет это объяснить» .. ах, нет, в разделе ответов не место, чтобы задать вопрос. –

+0

Не нужно ... Я понял это. – Guanxi

Смежные вопросы