$ .post变量未传递给php获取未定义的索引错误

时间:2017-03-17 00:32:56

标签: javascript php jquery .post

这段代码几乎可以工作,它会插入到数据库中,它会在页面上给出反馈,说它已经更新了。但是我在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);
           }
        });

    });

});

2 个答案:

答案 0 :(得分:0)

从您的&#39; get&#39;中删除$ conn和1&n;阻止,例如:

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

答案 1 :(得分:0)

JS和PHP都有几个问题。

  1. 调整输入隐藏的输入错误,实际上是name="reciever"而不是name="receiver";
  2. $("#submit").click()功能中,您尝试选择包含无效选择器的元素(例如$('message').val()而不是$("#message").val());
  3. 最后删除$_POST来调整1个键。如果您有任何疑问,请打印整个数组print_r($_POST);
  4. 这不是错误,而是建议。由于您需要conn.php来完成工作,我会使用require代替include