我有简单的php / ajax / mysql聊天。但不幸的是,当我将表单发送到数据库时,php将空字符串发送给MySQL,我该如何解决?
这里是page.php代码,带脚本:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("#messages").load('ajaxLoad.php');
$("#userArea").submit(function(){
$.post('ajaxPost.php', $('#userArea').serialize(), function(data){
$("#messages").append('<div>'+data+'</div>');
});
return false;
});
});
</script>
</head>
<body>
<div class="container">
<div id="messages"></div>
<form method="post" action="ajaxPost.php" id="userArea" style="margin: 0 auto; font-size: 23px; text-align: center;">
<h1>Chat</h1>
<input type="text" name="message" />
<input type="submit" value="send!" />
</form>
</div>
<?php include_once('ajaxLoad.php'); ?>
<?php include_once('ajaxPost.php'); ?>
和ajaxPost.php:
<?php
include_once('page.php');
include('config.php');
$message = $_POST['message'];
$db->Query("INSERT INTO messages(message1) VALUES ('$message')");
echo $message;
?>
如果您运行:alert($('#userArea').serialize())
它会显示您的消息。
答案 0 :(得分:0)
摆脱这些界限:
<?php include_once('ajaxLoad.php'); ?>
<?php include_once('ajaxPost.php'); ?>
这些脚本只能在AJAX中使用,在显示原始表单时不应该执行它们。当您使用include()
执行$_POST
时,ajaxLoad.php
中没有任何内容,因此您插入一条空信息。
您还没有显示$("#messages").load()
中的内容,但是从include
使用它的方式来看,我怀疑它应该与ajaxPost.php
一起运行。
我非常确定$.post()
在使用include_once()
进行调用时正常工作,而空行来自include_once('page.php');
。
我认为它不应该阻止插入,但你也不应该
ajaxPost.php
public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
}
public void DrawStuff()
{
this.Paint += new PaintEventHandler(panel1_Paint);
this.Refresh();
}
private void panel1_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
Graphics[,] g1 = new Graphics[140, 140];
int[,] graph = new int[140, 140];
int i, j;
for (i = 0; i < 140; i++)
for (j = 0; j < 140; j++)
{
graph[i, 8] = 1;
graph[i, 10] = 1;
}
Pen p = new Pen(Color.Blue);
SolidBrush mySolidColorBrush = new SolidBrush(Color.Blue);
Graphics a;
a = this.CreateGraphics();
for (i = 1; i <= 10; i++)
for (j = 1; j <= 14; j++)
{
g.DrawEllipse(p, 80 * i, 80 * j, 10, 10);
g.FillEllipse(mySolidColorBrush, 80 * i, 80 * j, 20, 20);
a.DrawLine(Pens.Blue, 80 * i, 80 * j, 80 * (i - 1), 80 * (j - 1));
}
}
}
中的。