2017-06-19 5 views
0

AJAXでフォームを送信し、結果のHTMLページにタグdivを挿入しようとしています。送信ボタンをクリックするたびに、フォームがあるページがリフレッシュされます(これはAJAXで私が理解したものでは起こりません)。結果はありません。ajaxで送信されたフォームの結果としてhtmlページを返します。

私はjavascriptとは異なる解決策を見つけましたが、私はAJAXを学ぼうとしているので、どこでミスをしたのかを知りたいと思います。ここで

htmlコード:

<form action="book.php" id="infoPrn"> 
    <p><input type="text" placeholder="Name" required name="name"></p> 
    <p><input type="text" placeholder="Email" required name="email"></p> 
    <p><input type="text" placeholder="Tel" name="tel"></p> 
    <p><input type="submit" role="button" value="Book"></p> 
</form> 

ここでのjQueryコード:助けを

<script > 
    $("#infoPrn").submit(function(e) { 
     e.preventDefault(); 
       $.ajax({ 
        type: 'POST', 
        data: $("#infoPrn").serialize(), 
        url: 'book.php', 
        success: function(data) { 
         $(".confirm").html(data); 
        } 
      }); 
     }); 
</script> 

感謝。

答えて

0

あなたのAJAXは問題ありません。あなたのフォーム提出も問題ありません。あなたが忘れてしまったことは、単にあなたの出力を含むように<div>を作成することです:

<div class="confirm"></div> 

この<div>は、最初は空白になります、とフォームが送信されるとbook.phpの内容が読み込まれます。ここで

は完全なコードです:

<form action="book.php" id="infoPrn"> 
    <p><input type="text" placeholder="Name" required name="name"></p> 
    <p><input type="text" placeholder="Email" required name="email"></p> 
    <p><input type="text" placeholder="Tel" name="tel"></p> 
    <p><input type="submit" role="button" value="Book"></p> 
</form> 
<div class="confirm"></div> 

<script> 
    $("#infoPrn").submit(function(e) { 
    e.preventDefault(); 
    $.ajax({ 
     type: 'POST', 
     data: $("#infoPrn").serialize(), 
     url: 'book.php', 
     success: function(data) { 
     $(".confirm").html(data); 
     } 
    }); 
    }); 
</script> 

は、この情報がお役に立てば幸い! :)

+0

おかげでObsidian年齢。実際に私は、Ajaxリクエストの結果を含むdivを持っています。私はそれを私の質問に追加しなかった(申し訳ありません)。奇妙なことは、ボタンをクリックするとページがリフレッシュされ、これは起こらないと思うので、コードに何か間違っていると思います。 –

+0

心配はいりません! 'e.preventDefault()'はあなたの 'デフォルト'のフォーム提出(そしてその後の更新)を防ぎます。上記のコードをローカルでテストしたところ、期待通りに動作します。あなたの問題はどこかにあるはずです。問題は間違いなく**あなたのjQueryがトリガーしていないことです**。 **あなたはjQueryライブラリ**を含んでいますか?コンソールにエラーはありませんか?もう1つの可能性は、間違って参照されている別のファイルにカスタムスクリプトがあることです。たぶんシンプルな '$(document).ready(function(){alert( 'Hi');})'を試して、それ自体がうまくいくかどうか確認してください:) –

+0

はい、私はJQueryライブラリが含まれていると確信していますページの別の部分で他のスクリプトを使用します。私はe.preventDefault()命令を削除して、リフレッシュを避け、スクリプトをデバッグしようとしましたが、ページがリフレッシュされました。私もajaxコールにコメントし、あなたが提案したシンプルなスクリプトを追加しました。ポップアップが表示されるので、jQueryがトリガされますが、ポップアップウィンドウで[OK]をクリックすると、ページが更新されます。 :(。 何か案は? –

関連する問題