PHP 联系论坛 - 点击"send" 按钮后如何让它不改变url?

PHP contact forum - After clicking "send" button how to make it not change the url?

我有一个论坛及其页面的一部分,它工作正常,但是当点击发送按钮时,url 总是更改为我的 .php 文件,所以 : (mysite.com/forum.php) 有办法阻止这个吗?并让它将信息发送到电子邮件,仅此而已而不更改 url?我想保留论坛所在的页面。html 因为论坛只是页面上的众多内容之一。

到目前为止,这是我的论坛和 php 代码:(基本)

 <form method="post" action="forum.php">
          <div class="field name-box">
                <input type="text" name="name" id="name" placeholder="Who Are You?"/>
                <label for="name">Name</label>
                <span class="ss-icon">&#10004;</span>
          </div>

          <div class="field email-box">
                <input type="text" name="email" id="email" placeholder="name@email.com"/>
                <label for="email">Email</label>
                <span class="ss-icon">&#10004;</span>
          </div>

          <div class="field msg-box">
                <textarea id="message" name="message" rows="4" placeholder="Your message goes here..."/></textarea>
                <label for="msg">Msg</label>
                <span class="ss-icon">&#10004;</span>
          </div>

          <input id="submit" class="button" name="submit" type="submit" value="submit" />
  </form>

php:

<?php

       $email = $_POST['email'];
       $name = $_POST['name'];
       $message = $_POST['message'];
       $from = 'From: Datcroft Website';
       $to = 'MyEmail@hotmail.co.uk';
       $subject = 'Datcroft Site Message';

       $body = "From: $name\n E-Mail: $email\n Message: $message\n";

       if ($_POST['submit']) {
           if (mail ($to, $subject, $body, $from)) {

           } else {

           }
       }
    ?>

有任何指示或帮助吗?我在 Php 和 Ajax 方面真的很菜鸟(我猜 Ajax 将是答案中出现的解决方案)

在此先感谢您!

这可以按原样工作吗?来自 fbo3264 下面的答案。

var Name = $("#Name").text();
var Email = $("#Email").text();
var Message = $("#Message").text();

$(document).ready(function() {


        $('#Forum1').submit(function(ev) {

            ev.preventDefault();


            var postData = $(this).serializeArray();
            var formURL = $(this).attr("action");


            $.ajax({
                type        : 'POST', //we use POST to submit the form
                url         : forum.php, // the url where we want to POST
                 data:{

          Name:Name,
          Email:Email,
      Message:Message

      },
                success:function(response) 
                {
                  //handle success (show a success modal or someting)
                },
                error: function(jqXHR, textStatus, errorThrown) 
                {
                  //handle error
                }
            });


        });

    });

如果您向 forum.php 发送请求,URL 将发生变化。您可以使用 Apache mod_rewrite 更改 URL 以匹配您想要的模式。像这样的一些规则,可以完成这项工作:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d          
RewriteCond %{REQUEST_FILENAME}\.php -f     
RewriteRule ^(.*)$ .html            

我会使用 jQuery 和 ajax,如您所料:

$(document).ready(function () {

                // manually submit the form
                $('#Forum1').submit(function (ev) {
                    ev.preventDefault();

                    var params = {"email": $("#Email").val(), "name": $("#Name").val(),
                        "message": $("#Message").val(), "submit": true};

                    $.ajax({
                        type: 'POST', //we use POST to submit the form
                        url: 'forum.php', // the url where we want to POST
                        data: params,
                        success: function (response)
                        {
                            console.log(response);
                        },
                        error: function (jqXHR, textStatus, errorThrown)
                        {
                            //handle error
                        }
                    });
                });
            });