Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/nginx/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 无需刷新的联系人表单_Php_Jquery_Contact Form - Fatal编程技术网

Php 无需刷新的联系人表单

Php 无需刷新的联系人表单,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

我一直在尝试创建此表单,以便在不刷新页面的情况下显示错误或确认消息

我一直在尝试使用jQuery,但没有成功。我的jQuery代码完全错误,我已经尝试创建它太多次了

有人能给我指一下正确的方向吗

HTML

PHP


是的,我可以。为了实现这一点,您需要使用。类似于以下的东西应该可以工作,但我还没有测试它:

$('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;
    });
});