Javascript 通过AJAX发布带有jquery工具包(jkit)验证的表单

Javascript 通过AJAX发布带有jquery工具包(jkit)验证的表单,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我不知道为什么我的ajax调用不起作用。我有一个启用了jkit验证的联系人表单,我想在它通过所有验证规则后通过AJAX发送它。然后我想将结果放入html div中,而不是进入php。请帮忙 HTML PHP 非常感谢。 您的邮件已发送 哎呀! 很抱歉,发送您的邮件时出现问题 您的ajax调用没有发送任何数据。。。试着这样做:给你的表单一个ID(比如,表单ID) 首先,您在发送到服务器的帖子中没有包含任何数据,您可能希望显式指定dataType参数以指示您希望返回HTML。有几种方法可以实现这一

我不知道为什么我的ajax调用不起作用。我有一个启用了jkit验证的联系人表单,我想在它通过所有验证规则后通过AJAX发送它。然后我想将结果放入html div中,而不是进入php。请帮忙

HTML

PHP


非常感谢。
您的邮件已发送

哎呀! 很抱歉,发送您的邮件时出现问题


您的ajax调用没有发送任何数据。。。试着这样做:给你的表单一个ID(比如,表单ID)


首先,您在发送到服务器的帖子中没有包含任何数据,您可能希望显式指定dataType参数以指示您希望返回HTML。有几种方法可以实现这一点,但这里有一种:

$("#send").click(function(ev) {
  ev.preventDefault();
  $.ajax({
    type: 'POST',
    url: 'servercode/contact.php',
    dataType: 'html',
    data: $(this).closest('form').serialize(),
    success: function(data) {
      if (data) {
        $("#content").html(data);
      }
    }
  });
});
您可能还想在以下位置查看所有ajax选项:


如果mail()命令设置不正确,则可能会出现另一个问题。我遇到了这个问题,我必须设置postfix并重新启动Web服务器。

因为没有办法干扰jkit验证方法(它没有提供文档化的API),所以我管理它工作的唯一方法是更改表单元素上的action属性以调用javascript函数,而不是实际发送表单。为了确保noscript用户也能够使用我这样做的表单

function sendContactForm() {
    $.ajax({
        type: 'POST',
        data: $("form").serialize(),
        url: 'servercode/contact.php',
        success: function(data){
            if(data != null) $("#content").html(data)
        }
    });

    return false;
};

$("form").prop("action", "javascript:sendContactForm()");
表单上的serialize()也不会附加的值,因此您需要稍微修改PHP代码:

<?php
if (!empty($_POST))
{
    $to = 'abc@aol.com'; 
    $subject = 'Contact form website';

    $message = 'Name: ' . $_POST['miniusername'] . "\r\n\r\n"; 
    $message .= 'Email: ' . $_POST['miniemail'] . "\r\n\r\n";
    $message .= 'Message: ' . $_POST['message'];
    $success = mail($to, $subject, $message);
} 

if (isset($success) && $success) { ?>
    <h1>Thank You</h1>
    <p>Your message has been sent.</p>
<?php } else { ?>
    <h1>Oops!</h1>
    <p>Sorry, there was a problem sending your message.</p>
<?php } ?>

非常感谢。
您的邮件已发送

哎呀! 很抱歉,发送您的邮件时出现问题


为什么在PHP代码中使用多个标记?单击“发送”按钮时,需要停止默认操作。使用
preventDefault()
。。。什么是php代码呈现?我尝试了所有这些我想lol看看什么工作,但所有php代码都可以在一个内我自己做了ajax尝试,如果我可以将感谢信息输入到div中,表单已经在向php发送数据,php正在发送电子邮件,这很好:)现在我不知道如何将php中的感谢信息输出到div中。我不希望用户看到我的php页面。。你知道我遗漏了什么吗?如果我添加了你发送的那个,验证和将值发送到服务器都不起作用,可能ajax与我的验证jkit冲突,好吧,我怀疑有一个事件冲突,因为验证jkit还想处理提交事件。验证完成后,需要调用ajax函数。我将更新我的答案以实现这一点。我没有收到错误,但是如果我粘贴那个ajax调用,验证和将值传递给php将不起作用,我不知道为什么。因为来自jkit的验证方法没有提供回调api,所以我发现的唯一方法是将表单上的action属性修改为javascript:sendTheForm();这很难看,但只要启用javascript,它就可以工作。OMG!是的,我非常感谢你!
$("#form_id").submit(function(event)
{
 event.preventDefault();
 var data = $(this).serialize();
 var url = $(this).attr("action");
 $.ajax({
    type: 'POST',
    data: data,
    url: url,
    success: function(data){
             if(data != null) $("#content").html(data)
     },
    error: function(xhr,status,msg){
       console.log(xhr.responseText);
    }
 });
});
$("#send").click(function(ev) {
  ev.preventDefault();
  $.ajax({
    type: 'POST',
    url: 'servercode/contact.php',
    dataType: 'html',
    data: $(this).closest('form').serialize(),
    success: function(data) {
      if (data) {
        $("#content").html(data);
      }
    }
  });
});
function sendContactForm() {
    $.ajax({
        type: 'POST',
        data: $("form").serialize(),
        url: 'servercode/contact.php',
        success: function(data){
            if(data != null) $("#content").html(data)
        }
    });

    return false;
};

$("form").prop("action", "javascript:sendContactForm()");
<?php
if (!empty($_POST))
{
    $to = 'abc@aol.com'; 
    $subject = 'Contact form website';

    $message = 'Name: ' . $_POST['miniusername'] . "\r\n\r\n"; 
    $message .= 'Email: ' . $_POST['miniemail'] . "\r\n\r\n";
    $message .= 'Message: ' . $_POST['message'];
    $success = mail($to, $subject, $message);
} 

if (isset($success) && $success) { ?>
    <h1>Thank You</h1>
    <p>Your message has been sent.</p>
<?php } else { ?>
    <h1>Oops!</h1>
    <p>Sorry, there was a problem sending your message.</p>
<?php } ?>