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

Javascript preventDefault()停止提交jquery表单值,javascript,php,jquery,ajax,wordpress,Javascript,Php,Jquery,Ajax,Wordpress,我一直在尝试为我正在开发的wordpress网站创建一个仅限邀请的系统(尽可能避免使用插件) 该网站是魔兽世界公会的网站,我有一个页面列出了新的公会申请者,有接受和拒绝选项。这一切都很好 然而,我正试图通过ajax提交表单,这正是我感到困惑的地方。 我有我的表格 <?php global $current_user; // if the user can send invites if (current_user_can("invite_users")) {

我一直在尝试为我正在开发的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
    }
?>
当我在提交时显示
ev.preventDefault()
时,警报显示成功。但是,这些值被解析为空字符串,一直解析到目标页面,并给出空sql记录。但是,如果我删除preventdefault,我当然会遵循链接,但是现在值被正确发送

这可能是什么原因造成的


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



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

ev.preventDefault()
作为该函数的第一行。我猜它是在启动表单提交之前尝试跟踪链接。

看起来好像调用
ev.preventDefault()
在事件处理程序代码之外。谢谢你,karthikr,现在问题很明显…
ev
不能在函数之外使用,所以
“+email+”
的东西是不必要的,因为
.val()
的返回值将始终是字符串。@Pointy(或
未定义的
)你的表单有
method=“GET”
但在JavaScript中,您使用的是POST。@伊恩:是的,但是(我认为)只有在没有与选择器匹配的元素的情况下。关键是,如果您实际获取的是元素的值,那么它将是一个字符串。(实际上,这可能是错误的;显式的“强制转换”仍然没有必要,因为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();
});
   <?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
}
?>