「みんな教えて! 選手権!!」開催のお知らせ

メールフォームとかで確認画面から書き直すのに戻ると
書いた文章が全部消えるとか聞きましたが、戻っても消えません。
確か、前にどこかのフォームでFIREFOXで書いて戻ったら消えちゃった事があって・・・
何が正しいのでしょうか? HTMLにformでCGIに送る仕様です。
いえ、残ってくれた方が良いと思うのですが、
消えるか消えないか試してみただけですが。

<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">

ブラウザの上の戻るボタンでも、ジャバスクリプトのボタンで戻っても消えません。

A 回答 (3件)

本来、元のページに戻るとそのページが動的に作成されているページで有効期限が0の場合は消えてしまうのが本来ですが、一部ブラウザ、あるいはアドオンの機能で入力内容を保持してくれる場合もありますが、それでも、基本は「消える」


 そのため、確認ページの戻るボタンには<input type="hidden" name="message" value="・・・">で記載内容を含めておくべきです。そうすることでもいずれのボタンを押されても、その内容を使用して新たなページを作成できます。
 その場合、記述がエラーの場合には値を消すと同時に、入力フォームに赤字などでエラー箇所を示すなり、入力エリアの背景色を変更するとよいでしょう。
<form action="formMail.cgi" method="post">
<input type="hidden" name="user" value="ほげ">
<input type="hidden" name="address" value="*****">
<input type="hidden" name="message" value="なんたらかんたら">
<input type="button" name="action" vale="戻る">
<input type="button" name="action" vale="送信">
</form>
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
HTMLのページに<form actionを付けて確認画面作って、CGIで送信しています。
アドオンは使っていないと思います。
<meta http-equiv="Cache-Control"を付けても消しても内容が保持されていたので、
不思議に思っていたのです。

<form action="※※.cgi" method="post">
<input type="hidden" name="message" value="内容">
formには、上記があれば、行き来しても内容が保持されているって事でしょうか。

お礼日時:2010/05/01 20:52

>formには、上記があれば、行き来しても内容が保持されているって事でしょうか。



そうですが、

>HTMLのページに<form actionを付けて確認画面作って、CGIで送信しています。

ここを見直す必要があります。
最初のフォーム自体をCGIから出力させます。
 拡張子はhtmlであろうと何であろうとよいのですが、それがCGIである必要があります。
 すなわち、何も入力なしてそれが呼ばれた場合は空白のフォームを生成し、入力があればそれを含んだフォームを生成させる。

 この場合、フォーム、エラー指摘フォーム、確認画面、再入力フォーム、完了画面のすべてをひとつのCGIで行うほうが効率的です。なぜなら、同じ部分がたくさんあるから。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2010/05/05 21:13

1.aaa.htmlのtextarea#aとtextarea#bにそれぞれ pppp と入力。

別に入力内容は何でもいい。
2.Sendで送信するとaaaa.htmlに行く

3.「aaaa.htmlにあるリンクを踏んでbbbb.htmlに飛び
bbbb.htmlにあるリンクを踏んでaaaa.htmlに飛び
aaaa.htmlにあるリンクを踏んでbbbb.htmlに飛び
…」を何回か繰り返します。

4.戻るボタンを連打してaaa.htmlに戻る
→textarea#aの内容は残り、textarea#bのものだけ消えている。

…というような話が
http://stackoverflow.com/questions/261351/browse …
に書かれていて、こちらで検証を行い再現しました。
==================aaa.html======================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Q5863255 TestCase 1</title>
<script type="text/javascript">
//<![CDATA[
window.onload = function(e){
document.getElementById("b").appendChild(document.createElementNS("http://www.w3.org/1999/xhtml","textarea"));
}
//]]>
</script>
<style type="text/css">
#a{
background-color:red;
}
#b{
background-color:blue;
}
</style>
</head>
<body >
<form action="aaaa.html" method="post" accept-charset="UTF-8" enctype="application/x-www-urlencoded">
<p id="a">
<textarea></textarea>
</p>
<p id="b">

</p>
<button type="submit">Send</button>
</form>
</body>
</html>
=====================aaaa.html===================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Q5863255 TestCase 1</title>
</head>
<body>
<p><a href="bbbb.html">XXX</a></p>
</body>
</html>
==================bbbb.html==================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Q5863255 TestCase 1</title>
</head>
<body>
<p><a href="aaaa.html">XXX</a></p>
</body>
</html>
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
何度も行き来すれば消えちゃうんですね。

お礼日時:2010/05/01 20:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報