preventDefault()停止提交的jquery表单值

时间:2013-10-08 13:59:14

标签: javascript php jquery ajax wordpress

我一直在尝试为我正在处理的wordpress网站创建一个仅限邀请系统(尽可能避免使用插件)。

该网站是一个魔兽公会网站的世界,我有一个页面列出公会的新申请人,有接受和拒绝选项。这一切都很好。

但是,我正在尝试通过ajax进行表单提交,这就是我感到困惑的地方。 我有我的表格

<?php
    global $current_user;
    // if the user can send invites
    if (current_user_can("invite_users")) {
    ?>
    <form action="applicantaccept" class="applicantacceptform" method="GET">
        <input type="hidden" name="email" value="<?php echo $row['Email'];?>"  />
        <input type="hidden" name="invitecode" value="<?php echo generateRandomString(); ?>" />
        <input style="background: none; border: none; color: white; text-decoration: underline; font-size: 1em; float: left;" type="submit" value="Send Invitation" />
    </form>
    <?php
    }
?>

我有我的jquery:

// ACCEPT
$('.applicantacceptform').submit(function (ev) {
    // INVITE FORM
    var form = $(this);

    var email = form.find('input[name="email"]').val();
    var invitecode = form.find('input[name="invitecode"]').val();

    $.post("applicantaccept", {
        email: "" + email + "",
        invitecode: "" + invitecode + ""
    })
        .done(function (data) {
        alert("Applicant Accepted" + data);
    })
        .fail(function (data) {
        alert("Failed To Accept Applicant. Please speak to administrator if this problem continues");
    });
ev.preventDefault();
});

当我提交ev.preventDefault()时,警报显示成功。但是这些值被解析为空字符串,直到目标页面,给出了空白的sql记录。但是,如果我删除了preventdefault,我会在链接之后,但现在正确地发送了这些值。

导致这种情况的原因是什么?


解决:感谢@Pointy的修复,下面的工作代码(只需将表单中的“GET”切换为“POST”

   <?php
global $current_user;
// if the user can send invites
if (current_user_can("invite_users")) {
    ?>
    <form action="applicantaccept" class="applicantacceptform" method="POST">
        <input type="hidden" name="email" value="<?php echo $row['Email'];?>"  />
        <input type="hidden" name="invitecode" value="<?php echo generateRandomString(); ?>" />
        <input style="background: none; border: none; color: white; text-decoration: underline; font-size: 1em; float: left;" type="submit" value="Send Invitation" />
    </form>
    <?php
}
?>

2 个答案:

答案 0 :(得分:0)

您是否尝试过return false;而不是ev.preventDefault();

答案 1 :(得分:0)

ev.preventDefault()作为该函数的第一行。我的猜测是在尝试提交表单之前尝试关注链接。