AJax变量没有发送到php变量

Tim*_*zee 5 javascript php forms ajax jquery

我是Ajax和Jquery的新手,并通过SO和在线教程学习,所以请记住我是一个新手你应该阅读并善待回答我的帖子.

我已设法创建以下内容,这是一个在提交时显示消息的表单.如果表单已成功提交,则会显示一条消息,而不会刷新页面,如下图所示:

在此输入图像描述

形成

        <form name="message-form" action="" id="contact-form" method"post">
        Message<br /> <input type="text" name="msg" value="" /><br />
        <input type="submit" value="Contact Us" name="contact" class="buttono" />
        </form>
        <div class="form-feedback" style="display:none">
        Thank You We will Get Back to you 
        </div>
         <div class="form-feedback" style="display:none">
        Ooops....Something Went Wrong
        </div>
       <div> 
Run Code Online (Sandbox Code Playgroud)

JQUERY

  $(function(){
        $("#contact-form").submit(function(e){
        e.preventDefault(); 

        $form = $(this);

        $.post(document.location.url, $(this).serialize(), function(data){
            $feedback = $("<div>").html(data).find(".form-feedback").hide();
            $form.prepend($feedback)[0].reset();
            $feedback.fadeIn(1500)
        })

        });
    })
Run Code Online (Sandbox Code Playgroud)

我想做的事

从文本字段消息中检索值并将其分配给php变量

我的问题

当我尝试使用以下代码检索消息的值时,没有任何反应:

PHP代码如下表单

 <?php
     if(isset($_POST['contact'])){
        $message = $_POST['msg'];
        echo $message; 
     }
     ?>  
Run Code Online (Sandbox Code Playgroud)

我对Ajax很新,所以我想我在这里做错了,不幸的是我不知道我哪里出错了所以我希望有人可以把我放在正确的道路上.

提前致谢

Adi*_*oui 1

Hanoncs的建议是可行的,但是只在浏览器端保留内容(通过仅从表单到div显示消息),总是会给用户留下消息是在服务器端发送(处理)的印象,但情况并非总是如此,一会让 php 在用 javascript 显示它之前返回它。所以这是我建议的另一种方法:

首先,进行关注点分离:向同一当前页面发送 POST HTTP 请求在某种程度上违背了 AJAX 的目的。HTTP 响应将包含所有页面(由 PHP 渲染的 HTML、用于模板的嵌入 HTML,如果未加入脚本标记,则可能还包含脚本)。相反,我建议您创建一个小的单独的 php 文件,负责仅渲染所需的标记。因此,$.post(document.location.url..我们可以使用$.post('pathToSmallPHPFile'..

其次,让 jQuery AJAX 函数接受回调或使用 Promise。我建议您仔细阅读以下链接。