2017-03-17 76 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