Javascript 通过AJAX发布带有jquery工具包(jkit)验证的表单
我不知道为什么我的ajax调用不起作用。我有一个启用了jkit验证的联系人表单,我想在它通过所有验证规则后通过AJAX发送它。然后我想将结果放入html div中,而不是进入php。请帮忙 HTML PHPJavascript 通过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调用没有发送任何数据。。。试着这样做:给你的表单一个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 } ?>