@y_w_y_w

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

JavaScriptによる計算結果をPOSTしたい

解決したいこと

掲題の通りとなります。HTMLで簡単な計算機を作り、画面遷移させたくなかった為、JavaScriptを組み込み、【計算】ボタン押下でテキストボックスに計算結果が表示される様になっています。【登録】ボタン押下で次の画面に移動しますが、その際、計算結果をPOSTしたいのです。

PHP、JavaScript、HTMLの学習を始めたばっかりの駆け出しです。大変見づらいコードとは思いますが、ご指導の程、何卒よろしくお願い致します。

該当するソースコード

<form class="〇〇〇" method="POST" action="〇〇〇.php" >
<table class="ta1">
<tr>
<th class = "〇〇〇">A</th>
<th class = "〇〇〇">B</th>
<th class = "〇〇〇" >C</th>
<th class = "〇〇〇">D</th>
</tr>
<tr>
<td style="position:relative">〇〇〇</td>
<td style="position:relative">〇〇〇</td>
<td style="position:relative">
<input id="total" name="" class="box" type="text" readonly="">
</td>
<td style="position:relative" width="40%">
<input type="number" pattern="^[a-zA-Z0-9]+$" class="box_1" name="a" id="count1">
<input type="number" pattern="^[a-zA-Z0-9]+$" class="box_1" name="b" id="count2">
<input type="number" pattern="^[a-zA-Z0-9]+$" class="box_1" name="c" id="count3">
<input type="number" pattern="^[a-zA-Z0-9]+$" class="box_1" name="d" id="count4">
<input type="number" pattern="^[a-zA-Z0-9]+$" class="box_1" name="e" id="count5">
<input type="button" class="calc-btn" onclick="sample()" value="計算">
<input type="button" class="calc-btn" id="b1" value="クリア" onclick="textClear()" />
</td>
</tr>
</table>

<input type="submit" class="calc-btn" value="登録">
</form>
``

<script>
function sample(a,b,c,d,e) {    
    var num_1 = document.getElementById("count1").value;
    var num_2 = document.getElementById("count2").value;
    var num_3 = document.getElementById("count3").value;
    var num_4 = document.getElementById("count4").value;
    var num_5 = document.getElementById("count5").value;
    
    if (num_1 != 0) {
    var num_1 = document.getElementById("count1").value;
    }
    else{
    var num_1 = 0;
    }

    if (num_2 != 0) {
    var num_2 = document.getElementById("count2").value;
    }
    else{
    var num_2 = 0;
    }

    if (num_3 != 0) {
    var num_3 = document.getElementById("count3").value;
    }
    else{
    var num_3 = 0;
    }
    
    if (num_4 != 0) {
    var num_4 = document.getElementById("count4").value;
    }
    else{
    var num_4 = 0;
    }

    if (num_5 != 0) {
    var num_5 = document.getElementById("count5").value;
    }
    else{
    var num_5 = 0;
    }

    var num_6 = parseInt(num_1)  + parseInt(num_2) + parseInt(num_3) + parseInt(num_4) + parseInt(num_5);
    const lean_value = document.getElementById('total').value = num_6;
}
</script>


0 likes

6Answer

POST すると言ってもその受け手がなければ意味がない話ですし、受け手があったとしてもそれがどのように受け取る仕様になっているかでいろいろ話が違ってきます。

0Like

Comments

  1. @y_w_y_w

    Questioner

    早速ありがとうございます。うまく返答できませんが、
    $aaa=POST['total’]をイメージしてます。
  2. > $aaa=POST['total’]をイメージしてます。

    それでは何をどういう形式で送信すればいいか分かりません。HTML5 の fetch、jQuery の ajax などいろいろ手段はあります。でも、受け取る側に求められる形式を書かないと具体的には誰も答えられないと思いますよ。例えば JavaScript の連想配列を JSON にシリアライズして送りたいとか。
  3. @y_w_y_w

    Questioner

    ご返信ありがとうございます。
    今一度、整理します。
    再投稿の折には、ご助言おねがいします。取り急ぎまして、ありがとうございました。

「計算結果をPOSTしたい」という目的はわかるのですが、何が問題になっているのでしょうか?
漠然と質問されても回答が難しいので、何が出来て何が出来ていないのか、何がわかっていて何がわかっていないのかを教えていください。

この手の問題は送信側か受信側か切り分ける必要があります。

送信側はブラウザのデベロッパーツールから通信の様子を見ることができて、送信されたパラメータなどが確認できます。(chromeだとNetworkタブです)
例えばこちらが参考になりそうです。

受信側はPHPのようなのでvar_dump($_POST)などで全て表示すれば確認できるでしょう。

0Like

Comments

  1. @y_w_y_w

    Questioner

    ありがとうございます。
    添付頂いたものも再度勉強します。取り急ぎまして、ありがとうございます。

画面遷移させたくなかった為

とあることから 非同期通信 をしたいということなのかな?

0Like

おそらく

  • 「計算」ボタンを押すと左端のipnutフィールドに計算結果を表示したい、このときページは切り替わらない
  • 「登録」ボタンを押すと左端のipnutフィールドの内容をPOSTで送信して画面遷移したい

だと思われ、ざっと見たところすでにそのようなHTMLになっているように見えます。
なのでやりたい/知りたいのはそのPOSTを受信するサーバ側の処理ではないでしょうか?
でも「~計算結果をPOSTしたい」という表題ではそう受け取る人はまずいないと思います…

0Like

This answer has been deleted for violation of our Terms of Service.

あまり検証せずに書き込んでしまいますが、もしかして input id="total" の要素の name 属性が空なのがうまくいかない原因だったりしませんか?
name="total" にしてみたら望みの動作になるかもしれません。

非ファイル型のフォームコントロールの名前/値は&記号で結合された name=value ペアでサーバーに送られます。
https://developer.mozilla.org/ja/docs/Learn/Forms/Sending_and_retrieving_form_data

0Like

Your answer might help someone💌