2017-10-09 35 views
0

這對於初學者來說太過緊張.. 我想做簡單的聊天,用戶發送消息到數據庫而不刷新頁面。 爲什麼這不起作用(我以前用過這個,它的工作原理是)..?Jquery PHP Mysql表單提交不起作用

<script src="http://code.jquery.com/jquery-1.9.1.js"></script> 
<script type="text/javascript"> 


$(function() { 

     $('#formnya').on('submit', function (e) { 

      e.preventDefault(); 

      $.ajax({ 
      type: 'post', 
      url: 'chat_save.php', 
      data: $('#text_nya').serialize(), 
      cache: false, 
      success: function() { 
       $('#text_nya').val(''); 
      } 
      }); 

     }); 

     }); 
</script> 

形式是:

<form method="post" action="" id="formnya"> 
<input class="w3-input w3-border-3 w3-white" placeholder="Click to chatting...." name="message" type="text" id="text_nya" maxlength="70"/> 
<input name="submit" class="w3-btn w3-black" type="submit" value="Send" id="submit" /> 
</form> 

php的:

if (isset($_POST['message'])) { 


     $message=$_POST['message']; 
     query("INSERT INTO {{pick}} sender='MyUsername', message='$message', time=now()","chat"); 

} 
+2

您是否收到任何JS或PHP錯誤? –

+0

如果您不打算提交默認表單操作,則應該將您的輸入類型從提交更改爲按鈕。 –

+1

我喜歡你應該做的與你的問題完全無關的所有評論。這些必須是主程序員。至於你的問題,阿文,我沒有看到你的方法有什麼問題。如果我不得不猜測這個問題,那就是你的函數query()。你能否將這個問題加入到這個問題中,以便我們能夠進一步幫助你? – Daerik

回答

0

您是否嘗試過使用$消息用雙引號代替單引號?這將是這樣的:

query("INSERT INTO {{pick}} sender='MyUsername', message=".$message.", time=now()","chat"); 

希望它有幫助。

+0

感謝您的評論。但它不工作:( – Arvin

+0

我發現了這個問題,當我改變成功:函數(數據){然後警報(數據),它顯示這個問題:你的SQL語法錯誤;檢查與您的MariaDB服務器版本相對應的手冊,以便在第1行的'sender ='MyUsername',message ='aaa',time = now()'附近使用正確的語法。如何解決此問題?好的。 – Arvin

0

在index.php中,添加代碼如下:

<!DOCTYPE html> 
<html> 
<head> 
<title>AJAX </title> 

<script src="http://code.jquery.com/jquery-1.9.1.js"></script> 
<script type="text/javascript"> 

jQuery(function() { 
    jQuery('#formnya').on('submit', function (e) { 

     e.preventDefault(); 

     jQuery.ajax({ 
      type: 'post', 
      url: 'chat_save.php', 
      data: jQuery('#text_nya').serialize(), 
      cache: false, 
      success: function (result) { 
       console.log(result); 
      } 
     }); 
    }); 
}); 
</script> 


</head> 
<body> 

<form method="post" action="" id="formnya"> 
<input class="w3-input w3-border-3 w3-white" placeholder="Click to chatting...." name="message" type="text" id="text_nya" maxlength="70"/> 
<input name="submit" class="w3-btn w3-black" type="submit" value="Send" id="submit" /> 
</form> 

</body> 
</html> 

和chatsave.php,添加代碼如下:

<?php 
if (isset($_POST['message'])) { 

    $servername = "localhost"; 
    $username = "root"; 
    $password = ""; 
    $dbname = "stackoverflow"; 
    //echo $message = $_POST['message']; 

    // Create connection 
    $conn = mysqli_connect($servername, $username, $password, $dbname); 
    mysqli_select_db($conn, $dbname); 
    $message = mysqli_real_escape_string($conn, $_POST['message']); 
    // Check connection 
    if ($conn->connect_error) { 
     die("Connection failed: " . $conn->connect_error); 
    } 

    $sql = "INSERT INTO pick (sender, message, m_time) 
    VALUES ('MyUsername', '$message', now())"; 

    mysqli_query($conn , $sql); 

    if ($sql == TRUE) { 
     echo "New record created successfully"; 
    } else { 
     echo "Error: " . $sql . "<br>" . $conn->error; 
    } 
} 

本地測試。在我的本地主機上工作就像一個魅力。

+0

試試這個,但不適合我。順便說一句,謝謝你的評論。 – Arvin

+0

你可以分享你的完整代碼,因爲我在本地主機上工作在我身邊。沒有任何錯誤。或者你可以檢查元素。 –

+0

感謝兄弟的幫助。問題已經解決了。我很傻,沒有看到插入數據時沒有「設置」。 - >插入tabel SET xxxx – Arvin