1

ページを更新せずにフォームを送信しようとしていますが、うまくいきevent.preventDefault();ません。これが私がこれまでに持っているものです

$('#contactform').on('submit', function() {
    event.preventDefault();
    var that = $(this),
        url = that.attr('action'),
        type = that.attr('method'),
        data = {};
        that.find('[name]').each(function(index, value) {
            var that = $(this),
                name = that.attr('name'),
                value = that.val();
            data[name] = value;
        });
    $.ajax({
        url: url,
        type: type,
        data: data,
        succss: function(response) {
            console.log(response);
        }
    });
});

ただし、送信ボタンが押されると、ページは引き続き再読み込みされます。助言がありますか?

更新: メイン フォーム ページのコードは次のとおりです。

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="<?php echo get_template_directory_uri();?>/ajax/main.js"></script>
<form action="<?php echo get_template_directory_uri(); ?>/ajax/contact.php" method="post" id="contactform">
    <input type="text" name="fname" placeholder="Name" />
    <input type="email" name="email" placeholder="Email" />
    <textarea name="message" id="" cols="30" rows="10" placeholder="Your Message"></textarea>
    <input type="submit" name="Submit" />
</form>
4

3 に答える 3

12

イベントを最初のパラメーターとして関数に渡す必要があります。

$('#contactform').on('submit', function(event) {

    event.preventDefault();

...

それでもうまくいかない場合は、別の問題が発生している可能性があります。フォームに何かをバインドする前に、リスナーを次のようにラップして、DOM の準備が整っていることを確認する必要があります.ready()

$(document).ready(function() {
    $('#contactform').on('submit', function(event) {
        event.preventDefault();
        ...
于 2013-07-15T20:55:22.560 に答える