Php 无需刷新的联系人表单
我一直在尝试创建此表单,以便在不刷新页面的情况下显示错误或确认消息 我一直在尝试使用jQuery,但没有成功。我的jQuery代码完全错误,我已经尝试创建它太多次了 有人能给我指一下正确的方向吗 HTML PHPPhp 无需刷新的联系人表单,php,jquery,contact-form,Php,Jquery,Contact Form,我一直在尝试创建此表单,以便在不刷新页面的情况下显示错误或确认消息 我一直在尝试使用jQuery,但没有成功。我的jQuery代码完全错误,我已经尝试创建它太多次了 有人能给我指一下正确的方向吗 HTML PHP 是的,我可以。为了实现这一点,您需要使用。类似于以下的东西应该可以工作,但我还没有测试它: $('form').submit(function(e) { var formData = $(this).serialize(); //Get the form data (input
是的,我可以。为了实现这一点,您需要使用。类似于以下的东西应该可以工作,但我还没有测试它:
$('form').submit(function(e) {
var formData = $(this).serialize(); //Get the form data (input)
//Post with AJAX
$.post("post-contact.php", formData)
.done(function(data) {
alert('Succes!')
})
.fail(function(data) {
alert('Failed!')
});
return false; //Prevent form from being submitted (same as e.preventDefault())
});
我希望这对您有所帮助,您应该阅读文档以了解更多信息。查看jQuery中的$.post 你可以有这样的表格:
<form id="form">
<label for="field">Field</label><br />
<input name="field" id="field" placeholder="Field" />
<span id="responseField"></span>
<br /><br />
<input type='submit' value='Send !'/>
</form>
$json = array("status" => "OK", "error" => []);
if (isset($_POST['field'])) // Test if every field is here
{
// Test if "field" is OK
if (!preg_match("/^[a-zA-Z0-9]+$/", $_POST['field']))
{
$json['status'] = "NO";
$json['error']['field'] = "Must be alphanumeric";
}
}
else
$json['status'] = "NO";
echo json_encode($json);
exit();
还有像这样的JS
$(document).on("ready", function() {
$("#form").submit(function() {
var url = "check.php";
$.post(url, {field: $("#field").val()}, function(data) {
var json = $.parseJSON(data);
if (json.status == "OK")
alert("Everything is OK!");
else
$("#responseField").html(json.error.field || "");
});
return false;
});
});
将会发生什么:您发送字段值,它在这里的PHP中被检查,只是一个字母数字检查,做您想要的。检查表单时,填写$json变量。请稍后再发。你的JS会检查一切是否正常,否则它会在字段后面的span中打印你的反馈
为了提高可移植性,请检查JasonK的回答,它会自动发送整个表单,这比构建要发送的对象要好得多。他还检查ajax请求是否失败,这是一个很好的习惯,我的代码是理解ajax请求如何工作的最简单方法。您需要使用ajax,并防止在推送提交时提交表单。您的jQuery代码在哪里?a,您的jQuery代码在哪里?b、 如果你的jquery是错误的,那么从零开始,c,有很多在线例子,你可以开始使用它作为参考,以有一个良好的开端。只需注意,你的反垃圾邮件将不是真正有效的,你可能更希望使用像reCapcha的东西,因为有些机器人,或者实际上很多人都能读懂你的2+2总和。@Azrael谢谢你,我会更改它。你需要在$'form'后面放上你的表单验证代码或确认代码。提交或介于两者之间。谢谢,它不起作用,但代码建议真的很有用helpful@Wiseguy这很奇怪,这是你的问题的确切答案,也应该是有效的:p
$json = array("status" => "OK", "error" => []);
if (isset($_POST['field'])) // Test if every field is here
{
// Test if "field" is OK
if (!preg_match("/^[a-zA-Z0-9]+$/", $_POST['field']))
{
$json['status'] = "NO";
$json['error']['field'] = "Must be alphanumeric";
}
}
else
$json['status'] = "NO";
echo json_encode($json);
exit();
$(document).on("ready", function() {
$("#form").submit(function() {
var url = "check.php";
$.post(url, {field: $("#field").val()}, function(data) {
var json = $.parseJSON(data);
if (json.status == "OK")
alert("Everything is OK!");
else
$("#responseField").html(json.error.field || "");
});
return false;
});
});