ajax显示提交文本

时间:2011-06-23 02:28:36

标签: javascript mysql ajax

我有一个带提交按钮的简单表单(如下)。我试图让用户在文本框中键入,然后当他/她单击提交时,页面将刷新并回显他们在div中键入的内容。用户键入的数据在回显之前存储在数据库中。问题是,当我点击提交时,输入不会立即显示。我必须单击刷新才能显示,当我浏览器时,我会给我一个弹出窗口(safari),要求重新发送数据。这将导致在DB中插入重复数据。我有一种感觉,我需要使用javascript,我也可以使用fadeIn使它更优雅,但我不知道该怎么做。我想我问是否有办法使用javascript来获取用户的文本并将其插入到mysql数据库中,并在提交单击全部1或0(优选)刷新后显示它。感谢

这是我的代码:

<form method='POST'  action='index.php'>
<input type='text' name='text' id='text'>
<input type ='submit' value='submit' name='submit'>
</form>

<?php
$input=$_POST['text'];
$put=mysql_query("INSERT INTO table VALUES ('$input')");

echo "<div id='area'>";
//i connect to the DB and echo out the data here

echo "</div>";

?>

3 个答案:

答案 0 :(得分:0)

抛开SQL注入攻击,您的代码容易受到攻击,标准做法是通过重定向回到表单所在的位置来响应POST。在您的情况下,它将是运行SELECT from table

的页面

答案 1 :(得分:0)

这里不需要使用AJAX。只需确保您执行以下操作之一:

  1. 确保您在之后从数据库中选择了INSERT数据。
  2. 更好,就是那个if ($_SERVER['REQUEST_METHOD'] == 'POST'),而不是执行额外的SQL查询,只显示已知的POSTed值。
  3. 关于代码示例的附注。如果您没有启用magic_quotes,则它很容易受到SQL注入的影响,因此请确保在查询中使用之前正确转义用户输入。

答案 2 :(得分:0)

我会在实际的html代码之前放置php语句,并修改你的代码就像这样

<?php
if (isset($_POST['text']))
{
  $input = mysql_real_escape_string($_POST['text']);

  $put=mysql_query("INSERT INTO table VALUES ('$input')"); //At this point the info has been put inside the DB

  echo "<div id='area'>";
  //i connect to the DB and echo out the data here
  echo mysql_query("SELECT * FROM table");
  echo "</div>";
}
?>

<form method='POST'  action='index.php'>
<input type='text' name='text' id='text'>
<input type ='submit' value='submit' name='submit'>
</form>

你没有看到它的原因是我在你想到的PHP之前加载了HTML。所以我会做一个php页面,其中所有的sql treatement都会完成,一旦完成,你就会重新调用index.php并在那里查询你是来自数据库的信息。