Javascript 通过调用函数发送AJAX电子邮件

Javascript 通过调用函数发送AJAX电子邮件,javascript,ajax,jquery,Javascript,Ajax,Jquery,下面是我的js函数,我一直在尝试从我的联系人表单发送电子邮件,我使用了验证检查,这些检查工作正常,但是当代码发送表单时,过程停止,并且没有收到来自$的响应。ajax。奇怪的是,当我在点击事件$(“#send_message”)上使用相同的代码时。点击(函数(e){它工作正常,但当我移除点击触发器侦听并试图通过调用函数来执行时,它不起作用。请告诉我我做错了什么,这样我就可以通过调用函数来解决发送电子邮件的问题 $.ajax({ type:"POST",

下面是我的js函数,我一直在尝试从我的联系人表单发送电子邮件,我使用了验证检查,这些检查工作正常,但是当代码发送表单时,过程停止,并且没有收到来自
$的响应。ajax
。奇怪的是,当我在点击事件
$(“#send_message”)上使用相同的代码时。点击(函数(e){
它工作正常,但当我移除点击触发器侦听并试图通过调用函数来执行时,它不起作用。请告诉我我做错了什么,这样我就可以通过调用函数来解决发送电子邮件的问题

 $.ajax({
                    type:"POST",
                    url:"email.php",
                    data: $("#contact").serialize(),
                    success:function(result){
                        //alert(response);
                        if(result == 'sent')
                        {

                             $('#send_message').removeAttr('disabled').attr('value', 'Send Info');

                            //and show the mail success div with fadeIn

                        }
                        else
                        {

                            //show the mail failed div


                        }
                     }

                });

您需要始终返回false。正在进行的ajax回发将被表单提交取消

因此,只需删除
else

jquery ajax还支持同步回发:

$.ajax({
   type:"POST",
   url:"send_email.php",
   data: $("#contact").serialize(),
   async: false,
   success:function(result){

编辑:第一个解决方案也应该有效,但在表单标签中使用返回值很重要,例如

显示调用此函数的代码,与您的问题无关(请参见下面的答案)我建议使用jquery表单验证,它还具有使用ajax提交表单的功能。@PhilippMehrwald使用javascript验证表单是非常危险的-任何人都可以覆盖js。表单验证应该主要从服务器端完成,然后作为一个
装饰性的
功能,您可能有某种形式的js验证。其他wise提交的信息可能已损坏/无效。@tftd我完全同意你的看法。但正如你所说,对于化妆品来说,它很容易使用,而且你“可能”摆脱了额外复杂的服务器端验证(我通常会这样做)-当然,停用JS的人不会获得相同的体验(老实说:我不在乎)。非常感谢先生
async:false,
这是真正的问题,现在通过将其添加到我的代码中解决了。