formのactionでメールとcgiを一緒に作動させるには?

[上に] [前に] [次に]
おがまん [E-Mail] [HomePage] 1999/11/23(火) 02:18:22
formのactionに関する質問、お願いします。

現在、レンタル掲示板を借りています。
で、submitボタンが押されたときに、掲示板のcgiを作動させると同時に、
自分のアドレスに書きこみの内容をメールで送りたいと思っています。
レンタル掲示板なので、cgiを改造することができません。
そこで、JavaScriptを使ってなんとかcgi実行とメール送信を両方する方法はないでしょうか?

しかもcgiだけを実行する人と、メール送信も実行する人を分けたいので、
JavaScriptのaction指定でsubmitの時の設定を行いたいです。
分かる方、おられましたら、よろしくお願いします。

以前にも同じような質問があるかと思って、actionで調べてみたのですが、
探し方が足りないのか、見つかりませんでした。もしあったらごめんなさい。

おがまん 1999/11/24(水) 03:42:22
えっと、自分で何とかできないかなと、メールとCGIを&や;や,で区切って
action="abc.cgi,mailto:aaa@aaa.aa.aa"
みたいにしたりしたのですが、当然のことながらダメでした。
どなたか、ヘルプお願いします。

hiro-kim 1999/11/24(水) 09:58:04
CGIスクリプトを修正できず,JavaScriptだけを使いたいというのならば,
ボタンを押すとメールが送信される,のではなく,
ボタンを押すとクライアントのメールプログラムが起動し,新規メール作成画面が開き,そこに受信者・題名・本文の内容が貼りつけられている(その後,ユーザが送信ボタンを押すことではじめてメールが送信される)
という状態までしか進まないと思います。

返信メールにするとエラーがでるのですが・・・
../199910/99100350.htm

hiro-kim 1999/11/24(水) 10:52:07
メール送信に関する解説としては,最近公開された以下のWebページが良いです。

impress Internet Watch 特集:ホームページにメール送信機能をつけてみよう
http://watch.impress.co.jp/internet/www/article/1999/1122/special.htm

Nobu3 1999/11/24(水) 17:41:32
環境がそろってないので、試していませんが、

formのサブミットボタンを
<input type=submit value="送信" onclick="formSubmit(this.form)">

スクリプトを
function formSubmit(obj){
  var tmp=obj.action;
  obj.action = 'mailto:aaa@aaa.aa.aa';
  obj.submit();
  obj.action = tmp;
}
と書いてみるとどうでしょう?

おがまん 1999/11/24(水) 18:27:22
hiro-kimさん、Nobu3さん、回答ありがとうございます。
どうも、簡単にできるわけではないみたいですね。
Nobu3さんの方法を試してみます。
上手くいったら書き込みますね。

おがまん 1999/11/25(木) 02:19:08
Nobu3さんの方法でやってみました。
スクリプトは
function formSubmit(obj){
  namae="ogaman";  ←メールを出す人の名前
  if(document.myform.field1.value==namae){ ←もし名前がogamanならメールを出してCGIを実行する
    var tmp=obj.action;
alert(tmp);      ←アラート@
    obj.action="mailto:9583204s@geocities.co.jp";
alert(myform.action); ←アラートA
    obj.submit();
alert(mypform.action); ←アラートB
    obj.action=tmp;
alert(myform.action); ←アラートC
  }
}
です。
アラートはデバッグのために入れているだけです。
で、IEでは問題なく動いてくれて、メールもちゃんと出せました。
ところが、NC4.6(ウィンドウズ)ではアラート@は出るのですが、
アラートAが出てくれませんでした。
 アラート@の下の行を
document.myform.action="mailto:9583204s@geocities.co.jp";
としても、NC4.6ではアラートAが表示されませんでした。
メール送信は、標準でNCのメッセンジャーを使っています。

何か、「こうすれば若しかして直るんじゃないでしょうか?」というアドバイスがあれば、
よろしくお願いします。
Nobu3さんの二回submitを実行するというやりかたには、結構感動したのですが、
うーむ、なんでNC4.6では動いてくれないのだろう。

Nobu3 1999/11/25(木) 08:42:47
NNではだめでしたか・・・。
ならば、2回ともスクリプトでサブミットする。とか、
サブミットの順番を変える。とかやってみてはどうでしょう?

<input type=submit value="送信" onclick="formSubmit(this.form);return false;">

function formSubmit(obj){
  obj.submit();
  obj.action = 'mailto:aaa@aaa.aa.aa';
  obj.submit();
}

おがまん 1999/11/26(金) 03:17:14
Nobu3さんの方法で、
function formSubmit(obj){
obj.submit();
obj.action='mailto:aaa@aaa.aa.aa';
obj.submit();
}
としてみました。
JavaScriptのsubmit();とformのサブミットが二回働いて、
同じ内容が二回書き込まれるかと思いましたが、IEでは大丈夫でした。
メールも送れて、書き込みもできました。
 ところが、NNではやはり、だめでした。

IEの場合、function formSubmit(obj){---}の一連の処理が終わってから、
CGIを起動するのですが、
NNの場合、最初のsubmit();でCGIを起動してしまい、
その後のJavaScriptは処理してくれませんでした。
 そこで、処理の順番を「メール→CGI」とするために、次のようなスクリプトにしました。
function formSubmit(obj){
  var tmp=obj.action;
  obj.action = 'mailto:aaa@aaa.aa.aa';
  obj.submit();
  obj.action = tmp;
  obj.submit();
}
ところが、今度は、「メールを送信しますか?」というダイアログボックスがでて、
送信はできるのですが、その後のCGIの処理の方を無視されてしまいました。

IEではどの順番でメールとCGIを起動しても正常に動いてくれます。
NNでは、まだ、どの順番でもうまく行きませんでした。
何か、他にアドバイスがありましたら、よろしくお願いします。

[上に] [前に] [次に]