2017-03-17 72 views
0

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

UPDATE

尝试另一种方式,但我仍然得到未定义指数在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); 
      } 
     }); 

    }); 

}); 
+1

您正在发送名为'message','sender'和'receiver',并读取'message1','sender1'和'receiver1'的参数。 – Amadan

回答

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
+0

谢谢,这是导致问题的缺失$(“#-------”)。val()。 – NOVICE505

+0

不客气:) – DrKey

0

删除$连接,然后从你的“得到”块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"]);

+0

没有任何影响。 – NOVICE505

+0

Add: print_r($ _ POST); to insert_message.php – Tony

+0

打印出'Array()' – NOVICE505