2017-04-08 13 views
0

以下のスクリプトは動作しません。私はPHPにjquery関数を使用して生成された値を渡そうとしています。私はこのコードを実行します。フォームは右にスライドしますが、値はエンコードされません。私は何か簡単なことを間違っていると思っています。jquery生成フォームをPHPに送信

<!DOCTYPE html> 
 
<html> 
 
    <head> 
 
    <title>Target Example</title> 
 
    <?php 
 
\t $x = $_POST['total']; 
 
\t 
 
\t echo $x; 
 
\t 
 
\t ?> 
 
\t 
 
\t <link rel="stylesheet" href="http://code.jquery.com/mobile/1.0b1/jquery.mobile-1.0b1.css" /> 
 
    <script src="http://code.jquery.com/jquery-1.6.1.min.js"></script> 
 
    <script src="http://code.jquery.com/mobile/1.0b1/jquery.mobile-1.0b1.js"></script> 
 
\t <script> 
 
\t $(document).ready(function() { 
 
\t  function compute() { 
 
      var a = $('#a').val(); 
 
      var b = $('#b').val(); 
 
      var total = a * b; 
 
      $('#total').val(total); 
 
     } 
 

 
     $('#a, #b').change(compute); 
 
\t \t 
 
\t }); 
 
\t </script> 
 
    </head> 
 
    <body> 
 
    <form action="<?php echo $PHP_SELF;?>" method="post"> 
 
    \t <div data-role="page" id="irr"> 
 
     <div data-role="header"> 
 
     <h1>Calculation</h1> 
 
     </div> 
 
     <div data-role="content"> 
 
     <div data-role="fieldcontain"> 
 
      <label for="a">Diameter:</label> 
 
      <input type="number" name="a" id="a" value="" /> 
 
      <label for="b">Diver:</label> 
 
      <input type="number" name="b" id="b" value="" /> 
 
      <label for="total">Result:</label> 
 
      <input type="text" name="total" id="total" value="" /> 
 
      <input type="submit"> 
 
     </div> 
 
     What did we do here? 
 
     </div> 
 
    </div> 
 
\t </form> 
 
    </body> 
 
</html>

+0

私はバージョン1.6.xでjqueryを使用する理由を尋ねることができますか?これには多くのセキュリティリークがあります。 1.12.xもie8互換です。あなたのライブラリは間違いなく古いものです。しかしそれは問題ではありません – TypedSource

+0

jqueryライブラリを2.2.1に変更してみました。 –

+0

'alert'文を投げましたか?良いトラブルシューティングテクニックは 'alert(2)'やいくつかの行数を何回失敗したかを見ることです。あなたのコードには何も問題はありませんが、jQueryはそのような単純なタスクのためには本当にトップです。私はあなたに非jQueryのバージョンを与えることができますが動作します。また、あなたのコードは最適なものではありません。何かを探すのに多くの時間を費やすからです。 – Manngo

答えて

0

あなたのフォームアクションが正しく設定されていませんでした。代わりに$ _SERVER ['SCRIPT_NAME']を使用してください。また、あなたが疑問に思っている場合に備えて、ショートハンドエコー機能を使用しました。うまくいけばそれをあなたのために修正します:)

<!DOCTYPE html> 
    <html> 
     <head> 
     <title>Target Example</title> 
     <?php 
      $x = $_POST['total']; 

      echo $x; 

      ?> 

     <link rel="stylesheet" href="http://code.jquery.com/mobile/1.0b1/jquery.mobile-1.0b1.css" /> 
     <script src="http://code.jquery.com/jquery-1.6.1.min.js"></script> 
     <script src="http://code.jquery.com/mobile/1.0b1/jquery.mobile-1.0b1.js"></script> 
     <script> 
      $(document).ready(function() { 
      function compute() { 
       var a = $('#a').val(); 
       var b = $('#b').val(); 
       var total = a * b; 
       $('#total').val(total); 
      } 

      $('#a, #b').change(compute); 

      }); 
     </script> 
     </head> 
     <body> 
     <form action="<?=($_SERVER['SCRIPT_NAME'])?>" method="post"> 
     <div data-role="page" id="irr"> 
      <div data-role="header"> 
      <h1>Calculation</h1> 
      </div> 
      <div data-role="content"> 
      <div data-role="fieldcontain"> 
       <label for="a">Diameter:</label> 
       <input type="number" name="a" id="a" value="" /> 
       <label for="b">Diver:</label> 
       <input type="number" name="b" id="b" value="" /> 
       <label for="total">Result:</label> 
       <input type="text" name="total" id="total" value="" /> 
       <input type="submit"> 
      </div> 
      What did we do here? 
      </div> 
     </div> 
      </form> 
     </body> 
    </html> 
+0

また、結果をページにエコーアウトさせるために、PHPを実行しているWebサーバー上で実際に実行する必要があることに注意してください。 –

関連する問題