2016-03-14 80 views
0

我試圖創建一個表單,您可以填寫您發佈消息的位置,並通過jQuery ajax將其打印到屏幕上。其餘的消息從數據庫中獲取並以相同的方式打印到屏幕上。林得到錯誤'堆棧空間',因爲我是一個100%的初學者,我找不到問題。jQuery AJAX調用發佈消息 - 錯誤堆棧空間不足

這裏是表單,從數據庫中獲取消息的代碼,以及jquery ajax調用。

<form class="guestbook"> 
     <label for="yourName" id="guestbook">Ditt namn:</label> 
     <br /> 
     <input type="text" name="yourName" id="yourName" placeholder="Namn" required> 
     <br /> 
     <textarea type="text" id="yourReview" name="yourReview"></textarea> 
     <br /> 
     <input value="Skicka" type="button" id="send-btn" name="send-btn"></input> 
    </form> 
    <!-- Här visas alla inlägg --> 
    <div class="guestOutput"> 
     <?php 
      $sql2 = "SELECT * FROM Messages ORDER BY ID ASC LIMIT 5"; 
      $result2 = mysqli_query($conn, $sql2) or die ('Kunde inte ta fram meddelanden'); 

      while($ms = mysqli_fetch_array($result2)){ 
       echo "<p class='allmsgs'>" . $ms['name'] . "<br>" . $ms['review'] . "<br> Postat: " . $ms['postad'] . "</p>"; 
      } 
     ?> 
    </div> 
</div> 
<script> 
    $("#send-btn").click(function(){ 
     var name = $("#yourName").val(); 
     var msg = $("#yourReview").val(); 

     //Ajax call 
     $.ajax({ 
      method:"POST", 
      url: "../php/postmsg.php", 
      data:{name: name, msg: msg} 
     }).done(function() { 
      $(".guestOutput").prepend($("<p class='allmsgs'>" + name + "<br>" + msg + "<br> Postat: Precis nu..." + "</p>").fadein(300)); 

      $("#yourName").val(""); 
      $("#yourReview").val(""); 
     }); 
    }); 
</script> 

這裏是php文件存儲在數據庫中的信息:

<?php 
include('config.php'); 

if(isset($_POST['guestName']) && (isset($_POST['yourReview']))){ 
    $rvw = $_POST['yourReview']; 
    $nm = $_POST['yourName']; 
    $sql1 = "INSERT INTO Messages(name, review) VALUES ('$nm', '$rvw');"; 

    $result1 = mysqli_query($conn, $sql1) or die ("Något gick fel vid uppladdning av ditt meddelande, försök igen"); 
} 
?> 

我有PHP更多的經驗,所以我不認爲有與數據庫功能的任何問題。

順便說一句。首先,我得到了錯誤'function uploadMessage is not defined' - 所以首先我有一個名爲uploadMessage的函數,然後是按鈕上的'onclick'。我刪除了這個,而是嘗試使用$(「#send-btn」)。點擊,這顯然沒有解決我的問題。但也許它可能與此有關?

我的問題現在可以在您的幫助下解決。謝謝,並且爲了解決郵件發佈時沒有將郵件信息打印到屏幕上的問題,我剛剛從表單中獲取了$(「#yourName」)。val()等值。

+0

'data:{name:yourName,msg:yourReview}'應該是'data:{name:name,msg:msg}' –

+0

發生錯誤的位置在哪裏?我沒有看到任何可能導致這種情況的代碼。 –

+0

好@devlincarnate,錯誤發生在控制檯中,一旦我嘗試'發送'一個新的消息存儲在分貝和打印到屏幕 –

回答

0

使用成功,而不是完成功能。

$.ajax({ 
    method: "xx", 
    url: "xx", 
    data: {xx}, 
    success: function(){ 
    //done function 
    } 
}); 

An alternative construct to the success callback option, the .done() method replaces the deprecated jqXHR.success() method.

+0

謝謝,這基本上解決了我的問題,雖然,現在當我發佈消息時,我沒有得到味精和名字,因爲我想,而是我'成功'打印。我切換var的位置,所以現在我得到[對象HTMLInputElement] [對象HTMLTextAreaElement] –

+0

[對象HTMLInputElement] [對象HTMLTextAreaElement]意味着你傳遞對象。使用.val()來獲取值並重新發送它們。 – nich

0

試着在你的機器增加RAM或重新啓動計算機。堆棧與機器的內存有關,而不是jQuery。