🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

PHP

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

JavaScript

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

2回答

1145閲覧

post()送信にて配列の要素の全ての中身のデータをphpに送り、php上で表示しようとしてもエラーになる。

himikonoouji222

総合スコア3

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

PHP

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

JavaScript

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2021/03/13 09:53

以前にJavaScriptの配列の要素の値渡しに関して質問した者です。

前回の質問にて

ajaxを用いて配列の要素データ(3つあるデータ)をphpに送り、filter_inputで受け取り、その送られた3つのデータをHTMLで表示させたい

という質問を前回しましたが、後々、ネットで調べたらpost()にてデータをやり取りできることを知りました。
(しかもシンプルなメソッドで便利であることを知りました。)

それで【PHP・Javascript】Form入力後に自動で自分のメールアドレスに内容を自動送信する – hidetoshl.com
上記を参考にJavaScriptの配列要素をPOST送信で値を送り、PHP上で表示させるプログラムを作成しています。

javascript

1 // 配列の要素を代入 2 var number1 = '1+1'; 3 var number2 =2; 4 var number3 = 3456; 5 6 // 連想配列化 7 var postData = {"number1":number1, "number2":number2,"number3":number3}; 8 9 // 配列の要素の中身をPOSTで送信 10 $.post( 11 "rensyu42.php", 12 postData);

しかし、javascript側でPOSTで送信してphp側でPOSTで受信するコードを書いたのですが、実行してみると、
「Fatal error: Uncaught Error: Undefined constant "number1" 」というエラーが出て要素データの中身を表示されません。

php

1<?php 2 3// JSから送信されたデータの取得 4$number1 = $_POST[number1]; 5$number2 = $_POST[number2]; 6$number3 = $_POST[number3]; 7 8// 内容を表示 9 echo '$number1'; 10 echo '$number2'; 11 echo '$number3'; 12 13?> 14

**<エラー内容>
Fatal error: Uncaught Error: Undefined constant "number1" **

どうやらphp側のほうで値がうまく受信されてないようですが、なぜ受信されないのでしょうか?

回答のほうよろしくお願いします。

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

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

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

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

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

m.ts10806

2021/03/13 10:29 編集

理解できてないなら解決済みにしないでください。 https://teratail.com/questions/327470 せっかくの回答全く意味なくなってます。 分からない部分があればその場で聞いてもらえればいいんです。 曖昧な理解なまま雑にしてても出来るわけがないです。
himikonoouji222

2021/03/13 12:07

いえ、違うんです。当初は前回のはajaxで送信できないなと思っていて後で調べたら、POST()で受け渡しができることが分かったんです。ですから、post()メソッドで簡略にできるなと思いまして。postメソッドで手軽にできないんですか?
himikonoouji222

2021/03/13 12:10

それとphpはhtmlと一緒に組み込むんです。つまり前回ではHTMLを表示することだんたんですが、今回はphpとhtmlを一緒に組むんです。
m.ts10806

2021/03/13 21:18

でも$.postは非同期通信の機能ですよ。 $.ajaxも裏では$.post使っています。 「曖昧な理解なまま雑にしてても出来るわけがない」と指摘したのはそこです。
guest

回答2

0

ベストアンサー

送り側

javascript

1const number1 = '1+1'; 2const number2 =2; 3const number3 = 3456; 4const url="api.php"; 5const body = Object.entries({number1,number2,number3}).reduce((x,y)=>(x.append(y[0],y[1]),x),new FormData()); 6const method="post"; 7fetch(url,{method,body}).then(res=>res.text()).then(console.log);

受け側

php

1<?PHP 2$number1 = filter_input(INPUT_POST,"number1"); 3$number2 = filter_input(INPUT_POST,"number2"); 4$number3 = filter_input(INPUT_POST,"number3"); 5 6echo $number1; 7echo $number2; 8echo $number3;

投稿2021/03/13 11:34

yambejp

総合スコア116661

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

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

himikonoouji222

2021/03/20 11:43 編集

すいません。あのJS側に$.postが入ってないのですが、POSTリクエストでPHPに送信するにはどうしたら良いのでしょうか? お手数をおかけしてすいません。
guest

0

$で始まってなく、クォートで囲われてない文字列は定数です。
エラーの通り。

それに前の質問よりコードが退化してます。
一通りコピペツギハギで済ませようとせず、1個1個理解してください。
前の質問の回答が無駄になってます。

Ajaxが何たるかの説明もしたのに、全く無視して進んでますよね、これ。

投稿2021/03/13 09:54

編集2021/03/13 10:10
m.ts10806

総合スコア80875

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問