質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

2回答

1977閲覧

formから送信したPOSTデータを受け取るとemptyになっている

qeeekin

総合スコア0

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2020/09/26 02:12

前提・実現したいこと

POSTデータをきちんと受け取れるようにしたい

発生している問題・エラーメッセージ

現在このようなループ処理の中で取得したidとnameの要素をinputタグの中のidとvalueに
割り当てる処理を実装しています。
そして割り当てたデータをjsのクリックイベント内でformのvalueに送りsubmitしているのですが受け取り先でデータを確認するとemptyになってしまうのを解決したいです。

該当のソースコード

index.html

1<script type="text/javascript> 2 $(document.ready(function() { 3 $(.update).click(function(){ 4 var id = $(this).data('id'); 5 var name = $('#name_'+id).val(); 6 7 $('input[name="f_name"]'].val(name); 8 9 document.simple_form.submit(); 10 ); 11}); 12 13</script> 14 15<form method="POST" action="index.php" name="simple_form"> 16 <input type="hidden" name="alphabet" value="aaa"> 17 <input type="hidden" name="f_name" value=""> 18</form> 19 20 21<?php foreach ($array as $key => $value): ?> 22 <input type="hidden" id="name_<?= $value['id']?>" data-id="<?= $value['id'] ?>"value="<?= $value['name'] ?>" </input> 23 <button class="update" id="update_<?= $value['id']?>" data-id="<?= $value['id'] ?>"type="button">更新</button> 24<?php endforeach; ?>

その後取得したデータを受け取り先で確認するとデータがemptyで何も受け取れていません

index.php

1if($_SERVER['REQUEST_METHOD'] == 'POST'){ 2 var_dump($_POST); 3}

index.html

1 array(size=0); 2 empty

ですがvar_dumpの直後にexitして処理を止めるとpostされたデータが受け取れています。

index.php

1 if($_SERVER['REQUEST_METHOD'] == 'POST'){ 2 var_dump($_POST); 3 exit(); 4}

index.html

1 array(size=0); 2 'alphabet' = 'aaa' 3 'f_name' = '佐藤'

試したこと

思い当たったのは多重リクエストになっているのか、js側でのイベントの指定がよくないのか色々と調べたのですが直接的な原因が分かりません。
解決方法を教えていただきたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

coco_bauer

2020/09/26 02:57

formのactionに設定している "index.php" の内容(プログラム)を示してください。 また、scriptタブの中に書かれているコードに、"{"が2つあるのに、"}"が1つしかありません。エラーになりませんか?
qeeekin

2020/09/26 07:31

プログラムとしては先ほどのvar_dumpを行った後元いたページにリダイレクト処理を行っています。 すいませんタグ中のコードに関してはこちらでの記入ミスです。
guest

回答2

0

これってJSいらなくないですか?

HTML

1<?PHP 2if($_SERVER['REQUEST_METHOD'] == 'POST'){ 3 var_dump($_POST); 4} 5?> 6 7<form method="POST" name="simple_form"> 8 <input type="hidden" name="alphabet" value="aaa"> 9 <button class="update" name="f_name" value="xxx">更新</button><br> 10 <button class="update" name="f_name" value="yyy">更新</button><br> 11 <button class="update" name="f_name" value="zzz">更新</button><br> 12</form>

投稿2020/09/26 04:53

yambejp

総合スコア116724

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

PHP側の処理が切りだされているため全体像が分かりませんが、var_dump()の仕様に引っかかっていませんか?
例えばvar_dump()を引数に指定した場合は、その関数が実行される直前に
var_dump()の内容が標準出力へ洩れてvar_dump()の中身が表示されないことがあります。
var_dump()の処理中で標準出力へ出力されるためだったと思います。(うろ覚え)

exitで止めず、POSTデータを一旦変数に格納してif文の外で変数の中身を出力させるとどうでしょうか。

ちなみにvar_dump()は返り値が無いので、出力をそのまま関数等の引数にすることはできません。
あくまで表示させるだけだったはずです。
詳しい仕様はPHPマニュアルをどうぞ

受け取り方は別途工夫してください。

投稿2020/09/26 03:03

mikan_s4n

総合スコア377

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問