ボタンをsubmitしたときにアラートが出るようにしたい

このQ&Aのポイント
  • javascriptを使用して、formのボタンをsubmitしたときにアラートが出るようにしたい。しかし、現在のコードではうまく動作しない。
  • formのsubmit処理を行う際に、ajaxを使用してサーバーと通信し、成功した場合には「購入できました」というアラートを表示する。エラーが発生した場合には「購入できませんでした。再度お試しください。」というアラートを表示する。
  • formのボタンをsubmitしたときにアラートが出るようにするためには、submitイベントをキャッチしてajaxを実行する必要がある。現在のコードではsubmitイベントが正しくキャッチされていないため、アラートが表示されない。正しくイベントをキャッチするためには、formのIDを指定してイベントをバインドする必要がある。
回答を見る
  • ベストアンサー

formのボタンをsubmitしたときにアラート

javascript で、formのボタンをsubmitしたときに アラートが出るようにしたいと思います。 下記のように作ってみましたが、うまく動きません。 どのようにすれば動くでしょうか? ご教示いただきたくお願いいたします。 <script type="text/javascript"> function(){ $('form1').submit(function(){ $.ajax({ type: 'POST', data: postData, url: 'buy.php', success: function(data){alert("購入できました");} error: function(){alert('購入できませんでした。再度お試しください');} }); return false; }); } </script> <form name="form1" id="form1" method="POST" name="form1" value="form1" action="buy.php"> <input type="hidden" name="id" value="100" /> <input type="hidden" name="name" value="高橋" /> <input type="submit" value="Save"> <form/>

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

> var postData = {id: $('#id').val(), name: $('#name').val()}; これじゃ取れないですね。失礼しました。 ちょっと冗長な書き方ですが var postData = {id: $('#form1 input[name=id]').val(), name: $('#form1 input[name=name]').val()}; みたいにすれば値は投げられると思います。

tajix14
質問者

お礼

有難うございます。 いろいろ弄りましたが、どうしても値が入りませんでした。 当方の方式は諦め、下記で試したところ上手くいきました。 http://ginpen.com/2013/05/07/jquery-ajax-form/ ご報告申し上げます。 アドバイス本当にありがとうございました。 深く御礼申し上げます。

その他の回答 (1)

回答No.1

残念ながらツッコミどころ満載ですね・・・。 ひとまず修正点を挙げておきます。 *<script>タグ直後の「function(){(処理)}の括り」 jQueryをお使いだと思うのですが、document読み込み時に動作させたいのであれば、 「$(function() {(処理)});」でくくってください。 もしくはこの括りを削除してscriptタグを一番下に持ってくる。 そうしないと、この場合はformタグを認識しません。 *「$('form1')」 この呼び出し方だと<form1>というタグにマッチさせようとします。 IDにマッチさせたい場合のjQueryのセレクタは 「$('#form1')」です。 *「success」の後のカンマ 「success:(処理)」と「error:(処理)」の間にカンマが必要です。 「{}」は連想配列なので、 var hash = {  a:1,  b:2,  c:3 }; のようにカンマで区切る必要があります。 ---- と、まずはここまでが文法や書き方の致命的な間違い。 以下は認識されているとは思いますが念のため。 *「postData」は定義されている? ajax実行時に「data: postData」を設定していますが、 そもそも「postData」って変数は用意してますか? 用意してなければ別途取得する必要があります。 *「<form/>」 閉じタグは「</form>」です。 ---- 上記を踏まえて以下のようにすればたぶん動くは動きます。 (便宜上インデントを全角スペースにしています。) <script type="text/javascript">  $(function(){   $('#form1').submit(function(){    // 仮にidとnameのみ値を取得するようにしています。    var postData = {id: $('#id').val(), name: $('#name').val()};    $.ajax({     type: 'POST',     data: postData,     url: 'buy.php',     success: function(data){alert("購入できました");},     error: function(){alert('購入できませんでした。再度お試しください');}    });    return false;   });  }); </script> <form name="form1" id="form1" method="POST" action="buy.php"> <input type="hidden" name="id" value="100" /> <input type="hidden" name="name" value="高橋" /> <input type="submit" value="Save" /> </form>

tajix14
質問者

補足

有難うございます。 早速、いただいたソースでテストしてみました。 やったことは下記の方法です。 1,上記のソースをコピーし、テキストファィルに貼り付ける 2,全角文字を置換(排除) 3,PHPに貼り付ける。 結果 アラートまでは出るのですが、なぜかPHPにトスができないようです。 (MYSQLにデータをトスできません) javascriptを外すと問題なくトスできます。 大変お忙しいところ恐縮ですが、どこが悪いかお教え頂けますでしょうか? 本当に申し訳ございません。 宜しくお願い致します。

関連するQ&A

  • 複数のsubmitボタンで押されたボタンを取得する方法

    form内の、submitボタンの値が拾えません。 1つだけsubmitボタンを設置すると値が拾えますが、 2つ以上submitボタンを設置すると拾えません。 仕様上、無理なのでしょうか? <SCRIPT language="JavaScript"> function move_post(){ alert(document.frmMvPost.btn.value); } </SCRIPT> <FORM name="frmMvPost" action="" method="post" onsubmit="return move_post()"> <INPUT type="submit" name="btn" value="テスト1"> <INPUT type="submit" name="btn" value="テスト2"> <INPUT type="submit" name="btn" value="テスト3"> </form>

  • submitボタンを二つ用意したい

    textに入力したものを二つのsubmitボタンで共用できるようにしたいと考えています。 作ってみたのですが、思ったように動かずに困っています。 ↓をどのように修正すれば動くでしょうか。 よろしくおねがいします。 <html> <body> <form name="hoge" action="hoge1.php" method="post"> <div class="ok_left"><input name="kw" value="" /> <script type="text/javascript"> <!-- function pushSubmit (val) { with(document.hoge){ if(val=='2'){ action = 'http://hoge.jp/hoge2.php'; } submit(); } } --> </script> <a href="javascript:pushSubmit('1');"><input name="submit1" type="submit" value="1"/></a> <a href="javascript:pushSubmit('2');"><input name="submit2" type="submit" value="2"/></a> </form> </body> </html>

    • ベストアンサー
    • HTML
  • formの中で別のactionをもったsubmitボタンの設置。

    formの中で別のactionをもったsubmitボタンの設置。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> <title>sample</title> <script language="JavaScript" type="text/javascript"> <!-- //<クリックした時に実行される関数> //*** 確認画面A function func1(form){ document.form1.check[].value =form.check[].value; document.form1.submit(); } //*** 確認画面B function func2(form){ document.form2.check[].value =form.check[].value; document.form2.submit(); } //--> </script> </head> <body class="index"> <form enctype="multipart/form-data"> <input type="check" name="test[]" value="0">0 <input type="check" name="test[]" value="1">1 <input type="check" name="test[]" value="2">2 <input type="button" onClick="func2(this.form)" value="確認B"> <input type="button" onClick="func1(this.form)" value="確認A"> </form> <!-- sousin.php画面へ --> <form method="post" name="form1" action="sousin.php" enctype="multipart/form-data"> <input type="hidden" name="check[]"> </form> <!--- text.php画面へ ---> <form method="post" name="form2" action="text.php" enctype="multipart/form-data"> <input type="hidden" name="check[]"> </form> </body> </html> 上記のように記述し、フォームの中に別のactionをもったsubmitボタンを設置しました。 チェックボックスで何と何がチェックされたかを渡したいのですが、エラーが発生します。 おそらくjavascript内の構文でcheck[]と記述してるからだと思いますが、 どのようにすれば受け渡すことができるのでしょうか。 checkのみにすると1つの値しか渡せません。

    • ベストアンサー
    • HTML
  • Chromeで複数submit

    現在1つのボタンで2つのフォームをsubmitしているのですがGoogleChromeだけ1正常に動作せず困っております。 下記スクリプトでIE、FireFoxはnform、nform2ともにsubmitされるのですがChromeのみnform2(後に記述したほう)のみ実行されます。 解決方法はありますでしょうか? 宜しくお願い致します。 <script language="javascript"><!-- function send() { if(window.confirm('設定してよろしいですか?')){ document.nform.submit(); document.nform2.submit(); }else{   alert('キャンセルしました'); } } //--></script> <form name="nform" action="a.php" target="blank" method="POST"> <input type="hidden" value="a" name="1"> </form> <form name="nform2" action="b.php" method="POST"> <input type="hidden" value="a" name="1"> </form> <button onClick="send()">ボタン</button>

  • 同一ページで複数のformを扱う場合

    同一のページ内にhiddenでIDを振った削除ボタンを用意しクリックされたIDを取得するにはどのようにすれば良いでしょうか? <form action="/test.php" name="1" method="post"> <input type="hidden" name="id" value="1" /> <input type="submit" name="delete" value="削除"> </form> -- 省略 <form action="/test.php" name="10" method="post"> <input type="hidden" name="id" value="10" /> <input type="submit" name="delete" value="削除"> </form> formにnameを振ってみても最後のIDがPOSTされてしまいます。

    • 締切済み
    • PHP
  • <FORM> </FORM> の中に さらに <FORM> </FORM>があるときのSUBMITボタンについて

    今、 <FORM ACTION="aaa.asp" METHOD="POST" Name="form1"> <input type="SUBMIT" value="ボタン1"> <FORM ACTION="bbb.asp" METHOD="POST" Name="form2"> <input type="SUBMIT" value="ボタン2"> </FORM> </FORM> としていて、ボタン2を押すとbbb.aspに 飛んでほしいのでに、aaa.aspに飛んでしまいます。 こういう場合どのようにすればよいのでしょうか? それぞれのボタンは hidden の値をそれぞれの フォームの中の値を渡したいので どうしてもSubmitがいいのです。

    • ベストアンサー
    • HTML
  • formの中で別のactionをもったsubmitボタンの設置。

    formの中で別のactionをもったsubmitボタンの設置。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> <title>sample</title> <script language="JavaScript" type="text/javascript"> <!-- //<クリックした時に実行される関数> //*** 送信画面 function func1(form){ document.form1.text.value =form.text.value; document.form1.file.value =form.file.value; document.form1.dummy.value =form.dummy.value; document.form1.submit(); } //*** ユーザー追加画面 function func2(form){ document.form2.text.value =form.text.value; document.form2.file.value =form.file.value; document.form2.dummy.value =form.dummy.value; document.form2.submit(); } //--> </script> </head> <body class="index"> <form enctype="multipart/form-data"> <table id="table" width="100%"> <tr><th width="10%">テキスト</th><td><input type="text" name="text"> <br /> <div style="text-align:left;"> <input type="button" onClick="func2(this.form)" value="テキスト確認"> </div> </td></tr> <tr><th width="10%">添付</th><td><input type="file" name="file"></td></tr> </table> <div style="text-align:left;"> <input type="button" onClick="func1(this.form)" value="確認"> </div> </form> <!-- sousin.php画面へ --> <form method="post" name="form1" action="sousin.php" enctype="multipart/form-data"> <input type="hidden" name="text"> <input type="hidden" name="file"> <input type="hidden" name="dummy"> </form> <!--- text.php画面へ ---> <form method="post" name="form2" action="text.php" enctype="multipart/form-data"> <input type="hidden" name="text"> <input type="hidden" name="file"> <input type="hidden" name="dummy"> </form> </body> </html> 上記のように記述し、フォームの中に別のactionをもったsubmitボタンを設置しました。 textの内容は渡せるのですが、添付したいファイルを渡すことができません。 添付ファイルも渡せるようにするにはどうすればよいのでしょうか

    • ベストアンサー
    • HTML
  • submit()で送れない

    <SCRIPT language="JavaScript"> <!-- function send55() { document.frm.aaa.value = "送る内容"; document.frm.submit(); } //--> </SCRIPT> <A href="JavaScript:void(0)" onclick="send55()">ここをクリック</A> <FORM name="frm" method="POST" action="test.php"> <input type="hidden" name="aaa"> </FORM> 上記内容で「ここをクリック」をクリックすると、aaaには"送る内容"がセットされるのですが、続くsubmit()が動作しないようです。 試しに<FORM>タグ内に以下の1行 <INPUT type="submit" name="test" value="送信テスト" > を追加して「送信テスト」ボタンをクリックすると正しくtest.phpが開きます。 使い方を間違っていますでしょうか? ご指導よろしくお願いします。

  • ダイアログでFORMのsubmit()

    以下のようなhtmlを作成しました。 (1)external_link.html(メイン側) <html> <head> <script> <!-- function setForm(elem){ var childwin; formid = document.forma; document.form1.login.value = formid.login.value; window.showModalDialog("dialog.html", this, "status:yes; resizable:yes;" ); } // --> </script> </head> <body> <form name="forma"> <input type="hidden" name="login" value="login1"> <input type="button" name="login1" value="ダイアログいけ" onClick="setForm(this);"> </form> <form name="form1"> <input type="hidden" name="login" value=""> </form> </body> </html> (2)dialog.html <html> <head> <script> <!-- function setForm(){ var parentwin = window.dialogArguments; var parentForm = parentwin.document.form1; document.formx.login.value = parentForm.login.value; document.formx.submit(); } // --> </script> </head> <body onLoad="setForm();"> <form action="http://host-name/servlet" method="POST" enctype="application/x-www-form-urlencoded" name="formx"> <input type="hidden" name="login" value=""> </form> </body> </html> 期待としては、このモーダルダイアログ上にサーブレットの実行結果が表示されることなのですが、何も実行されません。 でも、setForm()ファンクション上にalert("A");等をつけてやると ダイアログではなく『別画面上に』サーブレット実行結果が表示されます。 モーダルダイアログ上にサーブレットの実行結果を表示する方法はありませんでしょうか。 よろしくご教示お願いします。

  • javascript内からのsubmit

    PHP初心者です。 javascript内でsubmitを行い、値をPHP内で受け取る想定ですが、うまく作動しません。 具体的には下記のソースで、// Aの処理に入ってきて欲しいのですが、//B に入ってきます。 初歩的なことのなのかもしれませんが、どこが間違っているのか分からずはまっています。 ご教授ください。 ソースは以下です。 ■JavaScriptとForm(admLogin.html) <script type="text/javascript" src="js/jquery-1.9.0.min.js"></script> <script type="text/javascript"> function fncLogin(){ $("#frmAdmLogin").submit(); } </script> <body> <form id="frmAdmLogin" action="admLogin.php" method="post"> <input type="text" id="txtAdmId" /> <input type="text" id="txtAdmPass" /> <input type="button" name="btnLogin" value="ログイン" onclick="fncLogin()"/> </form> </body> ■PHP(admLogin.php) <?php if(isset($_POST['btnLogin'])) { // A }else{ // B } ?> ログインボタン押下 ↓ fncLogin内からフォームをsubmit ↓ // A の処理に入ってくる想定なのですが、//B の処理が実行される。 ちなみに、ボタンのinput typeをsubmitにすれば//A の処理に入ってくるのですが、 javascript内からsubmitしたいため、困っています。 どこを間違えているのでしょうか。。

    • 締切済み
    • PHP

専門家に質問してみよう