0

新しい Web サイトの下部に次の登録フォームがあります。AJAX 応答が読み込まれるとすぐに、ページはページの先頭にスキップします。私が知る限り、「return false」を正しく含めました。私は何が欠けていますか?ありがとうございました!

## index.php ##

<script type="text/javascript" src="mailing-list.js"></script>
<div class="signup container">
  <form id="signup-form" action="<?=$_SERVER['PHP_SELF']; ?>" method="get">
    <fieldset>
      <legend><h2 style="align:center;">Enter Your Email Address</h2></legend>               
        <div class="row">
          <div class="offset4 span3">
            <input class="email" type="text" name="email"  id="email" />
          </div>
          <div class="span1">
            <input type="submit" name="submit" value="Join"  class="btn btn-large btn-primary" />
          </div>
        </div>
      <div id="response">
        <? require_once('inc/store-address.php'); if($_GET['submit']){ echo storeAddress();  } ?>
      </div>
    </fieldset>
  </form>
</div>

## and mailing-list.js ##

$(document).ready(function() {
  $('#signup-form').submit(function() {
    // update user interface
    $('#response').html('Adding email address');
    // Prepare query string and send AJAX request
    $.ajax({
      url: 'inc/store-address.php',
      data: 'ajax=true&email=' + escape($('#email').val()),
      success: function(msg) {
        $('#response').html(msg);
      }
    });
    return false;
  });
});
4

3 に答える 3

3
$(document).ready(function() {
  $('#signup-form').submit(function(e) {
    e.preventDefault();
    // update user interface
    $('#response').html('Adding email address');
    // Prepare query string and send AJAX request
    $.ajax({
      url: 'inc/store-address.php',
      data: 'ajax=true&email=' + escape($('#email').val()),
      success: function(msg) {
        $('#response').html(msg);
      }
    });
    return false;
  });
});
于 2013-06-07T21:50:41.357 に答える
1

デフォルトのフォーム送信動作を実行しているとは思えません。preventDefaultメソッドを使用してそれを防ぎます。

$(function(){

   $('#signup-form').submit(function(e) {
     e.preventDefault();

     //your existing code goes here

   });

});
于 2013-06-07T21:49:29.783 に答える
1

フォームがデータを送信しないようにする必要があります (同じファイルであっても)。そうしないと、ajax 呼び出しが完了する前にページがリロードされます。これは .preventDefault(); で行います。

試す

 ...
    $('#signup-form').submit(function(event) {
        event.preventDefault();
        // update user interface
     ...
于 2013-06-07T21:49:48.990 に答える