0

フォームを送信するためにajaxを使用しています。私が使用しているスクリプトは、プレーンテキストがエコーされるフォームをテストするためだけのものですprocessform.php。ただし、送信ボタンをクリックしても、アラートが表示されず、ページが再読み込みされます。

return falseそれを防ぐことになっているのではありません。そして、ajaxの部分を削除すると、すべてがうまくいきます。

どこで間違っているのですか?

$("#submit").click(function(){
      $("#sidebar .message").show();
      $(".sidebar-content").hide();

      $.ajax({
        type: "POST",
        url: "processform.php",
        data: { name: "John", location: "Boston" }
      }).done(function( msg ) {
        alert( "Data Saved: " + msg );
      });

      return false;
    });
4

2 に答える 2

2

簡単な解決策:送信ボタンを「送信」ではなく「type="button」に変更します。

于 2013-02-20T19:33:39.130 に答える
1

要素#submitがボタンまたはでの入力であるtype="submit"場合、フォームアクションが発生した場合にデータを送信するデフォルトの動作がトリガーされる可能性があります。

type="button"データを送信するデフォルトの動作を持たないタイプに変更するか、クリックハンドラーでevent.preventDefault()を使用してデフォルトの動作をブロックすることができます。

$("#submit").click(function(e){
    e.preventDefault();
    ...
});

ajaxリクエストが成功したときにアラートをトリガーする場合は、のsuccess代わりにオプションを使用できます.done()

$("#submit").click(function () {
    $("#sidebar .message").show();
    $(".sidebar-content").hide();

    $.ajax({
        type: "POST",
        url: "processform.php",
        data: {
            name: "John",
            location: "Boston"
        },
        success: function(msg) {
            alert("Data Saved: " + msg);
        },
        error: function() {
            alert("Error occurred");
        }
    });

    return false;
});

jsfiddle

于 2013-02-20T19:32:51.840 に答える