$.post 变量没有传递给 php 得到未定义的索引错误

$.post variables not passing to php getting undefined index error

此代码几乎可以工作,它插入到数据库中,并在页面上提供反馈,表明它已更新。但是,我在 insert_message.php 的第 5-8 行之间得到未定义的索引,并且我的数据库中充满了空白条目(日期除外)。

很抱歉刚接触 jquery 和 AJAX。需要一些帮助。

形式

<form enctype='multipart/form-data' action='insert_message.php' method='POST' id='contact_form'>

                    <div class="row">
                        <div class="col-xs-6">
                            <div class='form-group'>
                                <label for='email'>Email:</label>
                                <input class='form-control' type='email' id='email' name='email' required='required' maxlength='35'/>
                            </div>
                        </div>
                    </div>

                    <div class="row">
                        <div class="col-xs-6">
                            <div class='form-group'>
                                <label for='subject'>Subject:</label>
                                <input class='form-control' type='text' id='subject' name='subject' required='required' maxlength='35'/>
                            </div>
                        </div>
                    </div>



                    <div class="form-group">
                        <label for='message'>Message:</label>
                        <textarea class="form-control" placeholder="Message" id='message' required="required"></textarea>
                    </div>

                    <input type="hidden" name="reciever" id='receiver' value="Admin">
                    <input class='btn btn-primary' id='submit' type='submit' value='submit' >
                </form>
                <span id="result"></span>

jquery

<script>
        $(document).ready(function(){

    $("#submit").click( function(e) {
        e.preventDefault();
        var message1 = $('message').val();
       var sender1 = $('sender').val();
       var receiver1 = $('receiver').val();
       var subject1 = $('subject').val();

 $.post("insert_message.php", {message:message1, sender:sender1, receiver:receiver1, subject:subject1}, function(info) { $("#result").html(info);
   });

clearInput();
});

$("#contact_form").submit( function() {
  return false;
});
function clearInput() {
    $("#contact_form :input").each( function() {
       $(this).val('');
    });
}
});
        </script> 

insert_message.php

    <?php
include("connections/conn.php");

$getsubject = mysqli_escape_string($conn,$_POST["subject1"]);
$getmessage = mysqli_escape_string($conn,$_POST["message1"]);
$getsender = mysqli_escape_string($conn,$_POST["sender1"]);
$getreceiver = mysqli_escape_string($conn,$_POST["receiver1"]);
$date = date("Y-m-d");

$insertmessage = "INSERT INTO messages (id,subject,message,date,sender,receiver) VALUES (NULL,'$getsubject','$getmessage','$date','$getsender','$getreceiver')";
$insert = mysqli_query($conn, $insertmessage) ;
   if($insert){
               echo "Message Sent";
   }else{
       echo "Message did not send";
   }

更新

尝试了替代方法,但我仍然在 inser_message.php

中得到未定义的索引
$(document).ready(function(){
 $("#submit").click( function(e) {
        e.preventDefault();

        $.ajax({
           url: "insert_message.php", 
           type: "POST",
           data: $("#contact_form").serialize(),
           success: function(result){
               $("#result").html(result);
           }
        });

    });

});

从您的 'get' 块中删除 $conn 和 1,例如:

$getsubject = mysqli_escape_string($_POST["subject"]); $getmessage = mysqli_escape_string($_POST["message"]); $getsender = mysqli_escape_string($_POST["sender"]); $getreceiver = mysqli_escape_string($_POST["receiver"]);

你在 JS 和 PHP 中都有几个问题。

  1. 调整输入中隐藏的拼写错误,实际上是 name="reciever" 而不是 name="receiver"
  2. 在您的 $("#submit").click() 函数中,您试图选择具有无效选择器的元素(例如 $('message').val() 而不是 $("#message").val());
  3. 通过删除末尾的 1 来调整 $_POST 键。如果您有任何疑问,请打印整个数组 print_r($_POST);
  4. 这不是错误,而是建议。因为你需要 conn.php 来完成你的工作,所以我会使用 require 而不是 include