CGI-BBS > SO−HO > ショッピングバスケット > 簡易ショッピングバスケットで送信できない


カレッヂ
カレッヂ


質問者 ponta  投稿日 1/10(木) 10:48:27
簡易ショッピングバスケットで注文フォームに
特商法のチェックを入れ忘れたり
メールを入れ忘れたりして次へ進み警告が出た時点で
前のページへもどりチェックを入れ最終確認へ進を押すと
送信中ですのでしばらくおまちください。という警告がでて
進めなくなるのですが、しばらく待っても進めないのですが
商品一覧までもどり、現在の買い物カゴノ中身を表示で
進むと出来るようになります。
チェックし忘れの方がいるかも知れませんので
なんとかしたいのですが、どうしたらよいでしょうか。
回答者 呑兵衛@大阪  [削除]  投稿日 1/10(木) 23:30:05
そういうスクリプトにはなっていないと思うのですが。
購入者情報を打ち込み、→最終確認へ進む ボタンをクリックすると webform.cgi にデータが転送され、
デフォルトスクリプトでは特商法を読んだことのチェック、またはEmailアドレス未記入の、
いずれかに引っかかるとエラー画面が出て、前に進めません。

> 送信中ですのでしばらくおまちください
が出るのは、ご注文の最終確認です の画面で、→注文する ボタンを間違って2度押しした
時に出るアラートで、これは正常なスクリプトのチェック機能です。
質問者 ponta  [削除]  投稿日 1/11(金) 09:21:28
あれから私の設置の仕方に問題があるのではないかと思い
こちらのサンプルで試したところ、やはり同じ現象になります。
当方はMACのブラウザーで使用しているのですが。

試しにWINで使用したところきちんと動作しました。
いろいろ試しましたが問題なく動作しました。

私のブラウザーの問題なのでしょうか。
失礼いたしました。
質問者 ponta  [削除]  投稿日 1/11(金) 10:17:15
くどいようですが、他のMACでもためしたところ(IE5.0)です。
やはり同じ現象が出て進めませんでした。

回答者 呑兵衛@大阪  [削除]  投稿日 1/12(土) 02:42:49
MAC 版 IE ver 5.0 にて動作の不具合を確認しました。
ページ移動後も、従前の値をクリアーできないバグのようです。

cargo.cgi の sub html の冒頭にあるヘッダー部分に以下の記述を追記し、
MAC 版 IE については 二重送信防止機能を諦める以外思い付きません。

if ($ENV{'HTTP_USR_AGENT'} !~ /MSIE.*Mac/i) {
# ここから既存スクリプト
        print <<"EOF";
<SCRIPT language="JavaScript">
〜〜
〜〜
</SCRIPT>
</head>
EOF
# ここまで既存スクリプト
}
else { print "</head>\n"; }
print "$body\n";

できれば、MACご愛用者のご意見も求めたいと思います。
回答者 鮎友  [削除]  投稿日 1/12(土) 22:12:20
MAC愛用者と言う事で、CGIど素人の人間が何か言うのもはずかしいのですが
cargo122でテストしましたら、同じ現象でしたのでcargo.cgiのボタン部分の
document.write("<input type=button value='    → 最終確認へ進む    ' onClick='Kakunin()'>

document.write("<input type=submit value='    → 最終確認へ進む    '>
に変更したら問題なく動作はしますが、この事がどんな事をしているのか
理解していません、特商法を読んだことのチェックをしなければエラーページ
がでますし、Emailアドレス未記入の場合も同じにエラーページが出ます
webform.cgiの
document.write("<input type=button value='   → 注 文 す る    ' onClick='Kakunin()'>
はこのままでいけましたがこれはtype=buttonをtype=submitに変えた時点で
二重送信防止機能を諦めたと言う事になるのでしょうか?
回答者 呑兵衛@大阪  [削除]  投稿日 1/13(日) 18:44:55
結果は実に単純でした。これで、送信できない不具合に対応してください。

cargo.cgi の sub html のヘッダー部

print <<"EOF";
<SCRIPT language="JavaScript">
から
</head>
EOF
までを削除し、</head> を
print "</head>\n";
と修正します。

二度押し防止機能は、最終注文時のみ機能させ、かごが表示される段階では
機能させなくても影響がないからです。

なお、鮎友さんの事例ですと
onClick を省略した場合 Windows 版ブラウザでは
input type=submit では二度押し防止機能が働きません。
input type=button ではページの移動ができません。
回答者 呑兵衛@大阪  [削除]  投稿日 1/13(日) 19:52:45
追記
sub html の submit ボタン部分は
<SCRIPT>
<!--
document.write("<input type=button value='    → 最終確認へ進む    ' onClick='Kakunin()'> <input type=reset value='× 書き直し'></form><p><br>\\n");
// -->
</SCRIPT>
を削除し、
print "<input type=submit value='    → 最終確認へ進む    '><input type=reset value='× 書き直し'>\n";
とします。
質問者 ponta  [削除]  投稿日 1/15(火) 09:44:39
ぼくもCGIど素人ですので、読んでいても何となくしか
理解できませんが、上記の内容でうまくいきそうですね
同じIEでもやはりWINとMACでは扱いが違うんですね。
大変参考になりました。
さっそくやってみようと思います。
ありがとうございました。

返信(回答)する


Web裏技