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

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

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

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

HTML

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

Q&A

解決済

2回答

2215閲覧

setTimeoutを使い、一度だけ自動でsubmitしたい

iamsin

総合スコア15

JavaScript

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

HTML

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

0グッド

0クリップ

投稿2017/07/26 09:15

編集2017/07/26 10:00

ページを開いて数秒後に、下記のようなform を一度だけ自動で同じページ内にsubmmitしたいと思い、setTimeoutでプログラムしましたが、繰り返しsubmitされてしまいます。

javascript

1 2【newinfo.js】 3 4function newinfo () { 5document.update1.submit(); 6} 7setTimeout(newinfo,10000);

HTML

1<HEAD> 2<script type="text/javascript" charset="UTF-8" src="./newinfo.js"></script> 3</HEAD> 4 5<略> 6 7<FORM action="" name="update1" method="post" > //同じページ内にsubmit 8<input type="hidden" name="new_info" value="更新"> 9</FORM> 10

ループを止めようと,下記のようにsetIntervalsetTimeoutを組み合わせてプログラムしましたが、繰り返しsubmitされてしまいます。

javascript

1【newinfo.js】 2 3var setIV = setInterval(newinfo,10000); 4 5function newinfo () { 6document.update1.submit(); 7} 8 9function stop_newinfo() { 10clearInterval(setIV); 11} 12 13setTimeout(stop_newinfo,15000);

HTML

1<HEAD> 2<script type="text/javascript" charset="UTF-8" src="./newinfo.js"></script> 3</HEAD> 4 5<略> 6 7<FORM action="" name="update1" method="post" > //同じページ内にsubmit 8<input type="hidden" name="new_info" value="更新"> 9</FORM> 10

一度だけsubumitできるようにするにはどのようにしたらよいでしょうか?

ご指導いただけるよう、宜しくお願いいたします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

submit すると、サーバ側がまったく同じページを返してくるようにサーバ側が作られているのではないですか?すると、 setTimeout がもう一度実行されるので、繰り返して当然です。

setTimeout で情報を送信後、ページの内容がまったく変化しなくていいようなアプリを開発されているのであれば、 form の submit ではなく、 XMLHttpRequest や fetch などで、 サーバに情報を送ったほうが良いと思います。

投稿2017/07/26 13:02

編集2017/07/26 13:04
mit0223

総合スコア3401

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

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

iamsin

2017/07/26 14:10

XMLHttpRequest や fetch でサーバーに情報を送るように検討いたします。ありがとうございます。
guest

0

submitするとページが移動するため、なんらかパラメータを渡してそれがあれば止めるように設計するか、localStorage とかデータを保持できるものを使って「1回だけ」に制限してみてはいかがでしょうか。

【Window.localStorage - Web API インターフェイス | MDN】
https://developer.mozilla.org/ja/docs/Web/API/Window/localStorage

投稿2017/07/26 09:22

kei344

総合スコア69400

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

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

iamsin

2017/07/26 14:10

XMLHttpRequest や fetch でサーバーに情報を送るように検討いたします。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問