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

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

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

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

HTML

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

Q&A

解決済

2回答

725閲覧

actionについて質問です

chapin

総合スコア80

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

HTML

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

0グッド

0クリップ

投稿2018/09/25 12:11

POSTとGETの勉強をしています。
そこでactionについてはっきりわからなかったので質問させてください。

ユーザがデータベースから情報をとってくるときにはGETを使うことが分かりました。
そしてactionでどこから情報をとってくるか定める事もわかりました。

一方でPOSTは入力したデータをデータベースに追加更新削除するために使う事がわかりました。
今まではactionは使わずに書いてきました。

個人的にはactionが必要なのはメソッドがGETのときのみ必要なのかもしれない、と考えていますがこれは誤りですか?よろしくおねがいします。

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

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

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

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

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

m.ts10806

2018/09/25 12:14

コードを例示されたほうがいいかもしません。またactionはあくまでPOSTやGETのリクエストを受け取るプログラムを指定するものなので、例えばPHPですとか、受け取る側の概念が必要です。タグにも質問にも言及されていませんが、サーバー側の言語は何を想定されていますか?
m.ts10806

2018/09/25 12:31

あと「わかりました」は良いのですがどのような情報をもとに理解されたのかを記載してください。参考にした記事や書籍などです。その情報があることで「その記事が正しいことが書いてあるか」というのがわかります。今のところあまり正しい理解はされていなさそうですが、どのような情報をもとに現在のような理解をされたのかは記事を見てみないとその整合性が判断できませんので
guest

回答2

0

ベストアンサー

ユーザがデータベースから情報をとってくるときにはGETを使うことが分かりました。

まだ用途を一例でしか把握していないからだと思いますが、半分正解で半分不正解のような感じです。
「データ取得」を基準に理解していらっしゃいますが、「データ送信」を基準に理解するべきです。
POSTについては後述しますが、GETはURLにパラメータを付与して送信する方法です。
https://hoge.com/huga.php**?id=xxx&age=yyy**」

GETの特徴はURLに残ることです。
つまり、ブログなどではページ数をパラメータとして付与したままブックマークしたり共有できますし、
アンカーリンクがあるページでは、アンカーリンクを付けたまま他人に共有できます。
(teratailでもプログラミング言語などのドキュメントの共有とかでよく見かけますね。)

逆に言えばパラメータが目に見える状態になっているので、パスワードなど人に漏らしてはいけない情報を
送信することに決して使用してはいけません。

上記の特徴から、「データベースから情報をとってくる」と言っても、どんなパラメータからどんな情報を取得するのかによって
GETを使うべきものなのか使ってはいけないものなのかは異なります。
公開されている情報を使ってデータベースから情報を取得するのであればGETで問題ないです。
(ECサイトの商品検索とか、絞り込み検索とか。)
しかし、システム側やユーザ本人しかわからない情報を使ってデータベースから情報を取得するのはGETではダメです。
(システム側で使うユーザの固有IDとか、ログイン時のパスワードとか)

また、別にデータベースの使用が前提のものではないです。


POSTは入力したデータをデータベースに追加更新削除するために使う事がわかりました。

こちらに関しては例外はあるかと思いますが、間違いではないかと思います。
ただし、GET同様データベースありきのものではないので、追加更新削除のためだけではないです。
また、GETで説明しましたが、データベースからデータを取得するときにも使います。

GETはURLにパラメータを付与していましたが、
POSTでのデータ送信はボディ部分にパラメータを付与して送信します。
そのため、見た目上はどんなデータが送られたのかわからないようになっています。
(かと言って絶対安全というわけではないですが。)

URLに、個人情報を扱ったデータ送信に向いている方法なのはもちろん、
付与できる情報量がGETよりも多いので画像などのデータ送信にも向いています。


今まではactionは使わずに書いてきました。
actionが必要なのはメソッドがGETのときのみ必要なのかもしれない、と考えていますがこれは誤りですか?

誤りです。
そもそもactionを書かなくて済むのは同じファイル内で処理する場合であり、
別なファイルに送信後のアクションを促す場合には必要なものです。
決してGET、POSTの違いではありません。

おそらく今は学習段階で1ファイルのみでの実装をしているのかと思いますが、
実際のWebサイトでは1ファイルではすみませんし、ページ遷移やフォームも複数存在することは少なくありません。
そういうときにはきちんとファイルを分け、このフォームではあのファイルのactionをGETで、というような指定する必要があります。
そのフォームのデータ送信はGETで対応できるものかもしれませんし、POSTでないと対応できないものかもしれません。
なので、actionはGET、POSTに関わらずあるべきものだと認識していただければと思います。

投稿2018/09/26 03:29

dice142

総合スコア5158

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

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

0

HTTPの基礎
MDN - <form>

ここで動作させてみればわかると思いますが、methodを指定しないときの初期値はgetです。
https://jsfiddle.net/kgo906tx/

ちなみにactionはリクエスト先のURLを示すものなので、getとかpostではないです。
methodと勘違いしているのだろうと推測して回答しました。

投稿2018/09/25 14:04

spookybird

総合スコア1803

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問