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

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

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

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

JavaScript

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

HTML

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

Q&A

解決済

2回答

16832閲覧

PHPでのフォームデータ再送の確認画面を回避する方法

Mcgregor

総合スコア31

PHP

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

JavaScript

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

HTML

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

0グッド

1クリップ

投稿2017/12/19 13:24

編集2017/12/19 13:27

PHPを学習しており、現在自力で解決策が見つかっておりません。
どなたかご助力、ご助言いただけると助かります。

//現状
簡単なデータを表示するブラウザアプリをPHPで作成しております。
画面上部にリストから選んで、画面下部へPOSTするという仕組みのものです。

データがどんどん増えるもので、1分毎に自動で更新する様にしております。
自動更新にはJavascriptを利用し更新を行なっています。

なのですが、POSTするリストを追加する以前はブラウザには何も表示されず、
自動で更新されていたのですが、POSTのリストを追加してからブラウザに

確認
このページを表示するにはフォームデータを再度送信〜

と表示されるようになりました。
データが送信されているので、当然表示されるのだろうと思い、
一旦そのPOSTリストを外したのですが、何故か表示され続けます。

//やったこと
POSTされた値が残ってるから表示されるのかと思い、
1)ブラウザのキャッシュやクッキーなど記録を全て削除
2)session_destroy()/$_POST = array()でクリア

を行なってみたのですが、相変わらずPOSTリストを外しても、
フォームデータの確認画面が表示されます。

//目標
まだ実装しておりませんが、将来的にはこのPOSTされた条件でデータを表示し、
自動で更新され続ける様にしたいと考えています。

この様なPOSTされた値がある場合に自動更新を自動でし続けるという方法を、
ご教示いただけると助かります。

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

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

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

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

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

guest

回答2

0

ベストアンサー

多分、JavaScriptで下記のようにしているため、「フォーム再送信…」というメッセージが表示されていると思われます。

js

1location.reload();

POSTをどのように行っていたのか不明ですが、POSTを消しても同じメッセージが表示されるのは、コードが消されていないからだと思います。

例えば、JavaScriptのファイル名がapp.jsだとして、サイト上ではapp.min.jsを読んでいて単純にminimized化し忘れているか、minimized化に失敗しているためだと思います。ブラザーの開発者ツール(F12)で実際に該当のコードを探してみてください。

それから、一度POSTデーターありでサイトを読み込んで「フォーム再送信…」というメッセージが出てから、JavaScriptを変更してリロードしても「再読み込み」なのでメッセージは表示され続けます。この場合は、ブラザーキャッシュをクリアしてから、URLロケーションバーにフォーカスしてからエンターしてページを読み込みするか、他のページから該当ページのリンクをクリックしてアクセスします。

POST付きでページを再読み込みしたいのであれば、JavaScriptでPOSTすればよいと思います。

js

1document.forms.フォーム名.submit();

HTMLフォームがない場合で、JavaScriptのみでフォーム要素を作成してPOSTしたいのであれば下記のようにします。

js

1var form = document.createElement('form'); 2document.body.appendChild( form ); 3 4var input = document.createElement('input'); 5input.setAttribute('type', 'hidden'); 6input.setAttribute('name', '要素名'); 7input.setAttribute('value', '値'); 8 9form.appendChild(input); 10form.setAttribute('action', 'POST先(現在ページ)'); 11form.setAttribute('method', 'post'); 12 13form.submit();

個人的には自動リロードでなんらかのパラメーターをつけたいのであれば、POSTメソッドではなく、GETでURLクエリ付きのほうが自然な気がします。URL表示にパラメーターを見せたくないのであれば、Ajaxで更新したいコンテンツノードの書き換えが良いと思います。jQueryなどを使うと簡単にできますし。

投稿2017/12/20 09:20

Tomak

総合スコア1652

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

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

Mcgregor

2017/12/21 13:48

Javascriptでのリロードですがご指摘の通りでした。 setTimeout("location.reload()",1000*60); これで1分で自動リロードさせるという方法を使っていました。 まだ教えていただいた、JavascriptでPOSTするという方法を試しておりませんが、 一度試してみようと思います。 私がGETとPOSTの適切な使用状況を理解できておらず、 作成時に素人考えなのですが「最初はどうなるのか?」と思っていて、 そういう場合はGETの方がなんとなくですが、適切なのかと少し悩みました。 別の方のご指摘でもGETの方がとおっしゃられておりましたので、 GETでも試してみようと思います。 コードのサンプル、ありがとうございます。
guest

0

画面上部にリストから選んで、画面下部へPOSTするという仕組みのものです。

かんたんなソースの提示はできますか?
frame(iframe)処理なのでしょうか?
定期的に処理するならクロスサイトでなければajaxでpostする手もあるかと思いますが
とりあえずmethodをgetにしてsubmitしていればpost云々は表示されないと思います
(reload的なものは辞めたほうがいいでしょう)

投稿2017/12/20 03:35

yambejp

総合スコア114779

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

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

Mcgregor

2017/12/21 13:41

ご助言ありがとうございます。 frameは使っておらず、本体となるPHPファイルにincludeして、そこをファンクションで呼び出していました。 この方法が良いのか悪いのか全くわかっておらず、単に一つのファイルに全てを記述しようとすると、 どうしても長く冗長的になるので別ファイルにPOSTするリストを作成し、 本体で読み込んで表示させようとしていました。 今だにGETを使うべきなのかPOSTを使うべきなのかよく理解しておらず、 そこを改めて勉強してみようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問