2017-10-09 62 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