PHP jQuery表单工作,直到我添加了ajax

伊吉的流行音乐

我试图通过使用ajax进行一些jQuery验证和php验证来使此表单尽可能简单。一切正常,直到我尝试包含Ajax。

index.php

<!DOCTYPE html>
<html lang="en">
  <head>
    <!-- Required meta tags always come first -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta http-equiv="x-ua-compatible" content="ie=edge">

    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.2/css/bootstrap.min.css" integrity="sha384-y3tfxAZXuh4HwSYylfB+J125MxIs6mR5FOHamPBG064zB+AFeWH94NdvaCBm8qnd" crossorigin="anonymous">

    <script type="text/javascript">                                 
// we will add our javascript code here
jQuery(document).ready(function($) {

    $("#ajax-contact-form").submit(function() {
        var str = $(this).serialize();

        $.ajax({
            type: "POST",
            url: "contactfinal.php",
            data: str,
            success: function(msg) {
                if(msg == 'OK') {
                    result = '<div class="alert alert-success" role="alert">Your message was sent, we\'ll get back to you ASAP!</div>';
                    $("#fields").hide();
                } else {
                    result = '<div class="alert alert-danger" role="alert"><p><strong>There were error(s) in your form:</strong></p>' + error + '</div>';
                }

            }
        });
        return false;
    });
});
</script>  
  </head>
  <body>

      <div class="container">

    <h1>Get in touch!</h1>

      <div id="error"><? echo $error.$successMessage; ?></div>

     <form id="ajax-contact-form" action="">
  <fieldset class="form-group">
    <label for="email">Email address</label>
    <input type="email" class="form-control" id="email" name="email" placeholder="Enter email">
    <small class="text-muted">We'll never share your email with anyone else.</small>
  </fieldset>
  <fieldset class="form-group">
    <label for="subject">Subject</label>
    <input type="text" class="form-control" id="subject" name="subject" >
  </fieldset>
  <fieldset class="form-group">
    <label for="exampleTextarea">What would you like to ask us?</label>
    <textarea class="form-control" id="content" name="content" rows="3"></textarea>
  </fieldset>
  <button type="submit" id="submit" class="btn btn-primary">Submit</button>
</form>

        </div>


    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.2/js/bootstrap.min.js" integrity="sha384-vZ2WRJMwsjRMW/8U7i6PWi6AlO1L79snBrmgiDpgIWJ82z8eA5lenwvxbMV1PAh7" crossorigin="anonymous"></script>




  </body>
</html>

contactfinal.php

<?php

    $error = ""; $successMessage = "";

    if ($_POST) {

        if (!$_POST["email"]) {

            $error .= "An email address is required.<br>";

        }

        if (!$_POST["content"]) {

            $error .= "The content field is required.<br>";

        }

        if (!$_POST["subject"]) {

            $error .= "The subject is required.<br>";

        }

        if ($_POST['email'] && filter_var($_POST["email"], FILTER_VALIDATE_EMAIL) === false) {

            $error .= "The email address is invalid.<br>";

        }

        if ($error != "") {

            $error = '<div class="alert alert-danger" role="alert"><p>There were error(s) in your form:</p>' . $error . '</div>';

        } else {

            $emailTo = "[email protected]";

            $subject = $_POST['subject'];

            $content = $_POST['content'];

            $headers = "From: ".$_POST['email'];

            if (mail($emailTo, $subject, $content, $headers)) {

                $successMessage = '<div class="alert alert-success" role="alert">Your message was sent, we\'ll get back to you ASAP!</div>';


            } else {

                $error = '<div class="alert alert-danger" role="alert"><p><strong>Your message couldn\'t be sent - please try again later</div>';


            }

        }



    }

?>
托肖·特拉雅诺夫(Tosho Trajanov)

问题在于,您甚至在加载jQuery库之前都试图执行jQuery脚本。尝试jQuery(document).ready()在加载bootstrap.min.js文件立即移动整个jQuery代码段,然后一切正常。

不知道您是否在那里,但是PHP部分未返回任何响应。如果要能够附加来自AJAX响应的错误/成功消息,则应该使用echo $successMessageecho $error

您应该echo按原样进行响应,或者更高级地进行响应,可以将json_encode其放入数组-

<?php

    $error = ""; $successMessage = "";

    if ($_POST) {

        if (!$_POST["email"]) {

            $error .= "An email address is required.<br>";

        }

        if (!$_POST["content"]) {

            $error .= "The content field is required.<br>";

        }

        if (!$_POST["subject"]) {

            $error .= "The subject is required.<br>";

        }

        if ($_POST['email'] && filter_var($_POST["email"], FILTER_VALIDATE_EMAIL) === false) {

            $error .= "The email address is invalid.<br>";

        }

        if ($error != "") {

            $error = '<div class="alert alert-danger" role="alert"><p>There were error(s) in your form:</p>' . $error . '</div>';

            echo $error;

        } else {

            $emailTo = "[email protected]";

            $subject = $_POST['subject'];

            $content = $_POST['content'];

            $headers = "From: ".$_POST['email'];

            if (mail($emailTo, $subject, $content, $headers)) {

                $successMessage = '<div class="alert alert-success" role="alert">Your message was sent, we\'ll get back to you ASAP!</div>';

                echo $successMessage;


            } else {

                $error = '<div class="alert alert-danger" role="alert"><p><strong>Your message couldn\'t be sent - please try again later</div>';

                echo $error;


            }

        }



    }

?>

接下来,由于服务器正在返回消息,因此您只需将响应追加到错误持有者中

<script type="text/javascript">                                 
// we will add our javascript code here
jQuery(document).ready(function($) {

    $("#ajax-contact-form").submit(function() {
        var str = $(this).serialize();

        $.ajax({
            type: "POST",
            url: "contactfinal.php",
            data: str,
            success: function(response) {

                $('#error').html(response);

            }
        });
        return false;
    });
});
</script> 

这部分<div id="error"><? echo $error.$successMessage; ?></div>无效,因为您正在尝试将javascript字符串打印到PHP中。如果您遵循上面的AJAX代码段I,则只需将该部分替换为空的div<div id="error"></div>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将AJAX / jQuery添加到简单的PHP表单

Ajax不会将表单数据发送到我的PHP文件来发送邮件

使用AJAX / PHP将其他站点表中的内容插入到我的表单中吗?

如何重复做一会儿直到我得到我想要的php号码?

PHP表单和Ajax我的表单两次添加帖子

Ajax生成的PHP表单无法正常工作

如何将“回复”添加到我们从网站PHP表单获得的电子邮件中?

将表单值传递到我的 php 数据数组中

我的联系表格工作正常,直到我添加了附件选项。不再发送消息。知道如何验证附件字段吗?

当我添加用户名功能时,php登录表单无法正常工作

也添加了PHP多维数组

使用Jquery Ajax PHP提交表单

Jquery 代码工作正常,直到我包含严格模式

从ajax文件返回PHP对象到我的JavaScript代码

我的Ajax php代码无法正常工作

我如何只用jQuery和PHP就能制作出高效的ajax实时表单

ajax + php + html表单

PHP Ajax表单发送

获取json ajax php表单以远程工作

为什么我的AJAX表单仍在加载我的PHP页面?

PHP到我的SQL插入

AJAX/jQuery/PHP - AJAX 表单处理程序“非法调用”

PHP / Ajax / jQuery的?继续轮询外部PHP脚本,直到它返回一个值

jQuery替换INPUT对象后,PHP表单无法正常工作

echo为我在PHP中输出的内容添加了新行

我在获取数据时添加了时间查询,但它说在 php 中找不到数据

添加到我的 CSS 的任何更改都不再应用于我的 PHP

使用JQuery,Ajax,PHP,Json进行表单验证

将表单PHP修订提交到JQuery AJAX