PHPを学習しており、現在自力で解決策が見つかっておりません。
どなたかご助力、ご助言いただけると助かります。
//現状
簡単なデータを表示するブラウザアプリをPHPで作成しております。
画面上部にリストから選んで、画面下部へPOSTするという仕組みのものです。
データがどんどん増えるもので、1分毎に自動で更新する様にしております。
自動更新にはJavascriptを利用し更新を行なっています。
なのですが、POSTするリストを追加する以前はブラウザには何も表示されず、
自動で更新されていたのですが、POSTのリストを追加してからブラウザに
確認
このページを表示するにはフォームデータを再度送信〜
と表示されるようになりました。
データが送信されているので、当然表示されるのだろうと思い、
一旦そのPOSTリストを外したのですが、何故か表示され続けます。
//やったこと
POSTされた値が残ってるから表示されるのかと思い、
1)ブラウザのキャッシュやクッキーなど記録を全て削除
2)session_destroy()/$_POST = array()でクリア
を行なってみたのですが、相変わらずPOSTリストを外しても、
フォームデータの確認画面が表示されます。
//目標
まだ実装しておりませんが、将来的にはこのPOSTされた条件でデータを表示し、
自動で更新され続ける様にしたいと考えています。
この様なPOSTされた値がある場合に自動更新を自動でし続けるという方法を、
ご教示いただけると助かります。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
+1
多分、JavaScriptで下記のようにしているため、「フォーム再送信…」というメッセージが表示されていると思われます。
location.reload();
POSTをどのように行っていたのか不明ですが、POSTを消しても同じメッセージが表示されるのは、コードが消されていないからだと思います。
例えば、JavaScriptのファイル名がapp.js
だとして、サイト上ではapp.min.js
を読んでいて単純にminimized化し忘れているか、minimized化に失敗しているためだと思います。ブラザーの開発者ツール(F12)で実際に該当のコードを探してみてください。
それから、一度POSTデーターありでサイトを読み込んで「フォーム再送信…」というメッセージが出てから、JavaScriptを変更してリロードしても「再読み込み」なのでメッセージは表示され続けます。この場合は、ブラザーキャッシュをクリアしてから、URLロケーションバーにフォーカスしてからエンターしてページを読み込みするか、他のページから該当ページのリンクをクリックしてアクセスします。
POST付きでページを再読み込みしたいのであれば、JavaScriptでPOSTすればよいと思います。
document.forms.フォーム名.submit();
HTMLフォームがない場合で、JavaScriptのみでフォーム要素を作成してPOSTしたいのであれば下記のようにします。
var form = document.createElement('form');
document.body.appendChild( form );
var input = document.createElement('input');
input.setAttribute('type', 'hidden');
input.setAttribute('name', '要素名');
input.setAttribute('value', '値');
form.appendChild(input);
form.setAttribute('action', 'POST先(現在ページ)');
form.setAttribute('method', 'post');
form.submit();
個人的には自動リロードでなんらかのパラメーターをつけたいのであれば、POSTメソッドではなく、GETでURLクエリ付きのほうが自然な気がします。URL表示にパラメーターを見せたくないのであれば、Ajaxで更新したいコンテンツノードの書き換えが良いと思います。jQuery
などを使うと簡単にできますし。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
+1
画面上部にリストから選んで、画面下部へPOSTするという仕組みのものです。
かんたんなソースの提示はできますか?
frame(iframe)処理なのでしょうか?
定期的に処理するならクロスサイトでなければajaxでpostする手もあるかと思いますが
とりあえずmethodをgetにしてsubmitしていればpost云々は表示されないと思います
(reload的なものは辞めたほうがいいでしょう)
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 91.04%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2017/12/21 22:48
setTimeout("location.reload()",1000*60);
これで1分で自動リロードさせるという方法を使っていました。
まだ教えていただいた、JavascriptでPOSTするという方法を試しておりませんが、
一度試してみようと思います。
私がGETとPOSTの適切な使用状況を理解できておらず、
作成時に素人考えなのですが「最初はどうなるのか?」と思っていて、
そういう場合はGETの方がなんとなくですが、適切なのかと少し悩みました。
別の方のご指摘でもGETの方がとおっしゃられておりましたので、
GETでも試してみようと思います。
コードのサンプル、ありがとうございます。