Ajax обновляет базу данных после отправки

#php #html #ajax

#php #HTML #ajax

Вопрос:

Я изменил код здесь (http://www.w3schools.com/PHP/php_ajax_database.asp ) для обновления и отображения моей базы данных после ввода поля ввода и нажатия кнопки для отправки. У меня есть

 <form method="post" action="process.php" id="processer" onsubmit="showUser('me');">
<label for="Process">Process</label><input type="text" name="process" id="process">    
<input type="submit" value="Process">
</form>
  

Мой Ajax-код отправляет:

 xmlhttp.open("GET","getuser.php?q=" str "amp;t="   Math.random(),true);
xmlhttp.send();
  

и, наконец, мой getuser.php является

 <?php
$q=$_GET["q"];

$con = mysql_connect('localhost', 'root', '');
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("short", $con);

$sql="SELECT * FROM table WHERE creator = '$q'";

$result = mysql_query($sql);

echo "<table border='1'>
<tr>
<th>id</th>
<th>data</th>
    </tr>";
    while($row = mysql_fetch_array($result))
      {
    echo "<tr>
    <td>" . $row['id'] . "</td>
    <td>" . $row['data'] . "</td>
    </tr>";
      }
echo "</table>";

mysql_close($con);
?>
  

Проблема в том, что когда я нажимаю отправить, иногда обновляется 1, иногда 2, а другие вообще отсутствуют. Допустим, я отправляю числа с 1 по 10, в первый раз я вижу 1, 2, затем после ввода 3 я ничего не вижу, затем внезапно 3, 4, а затем ничего, затем 5 (в то время как я только что ввел 6), затем 6, затем 7, 8.

Кэшируются ли мои данные отображения php? или как я могу сделать обновление плавным и последовательным?

Заранее спасибо.

Комментарии:

1. Ваш пример кода подвержен эксплойтам SQL. (Как и почти все примеры на w3schools. И вы бы нашли лучшее введение AJAX где-нибудь еще). — Я понятия не имею, что вы имеете в виду под 1,2,3,4,.. Но вместо утомительных ручных настроек xmlhttprequest используйте jQuery, который более надежно обрабатывает потенциальные проблемы с кэшированием.

2. Большое вам спасибо, оказывается, я вызывал данные слишком быстро, прежде чем они были сохранены в базе данных

Ответ №1:

Попробуйте проиндексировать свою базу данных, чтобы ускорить время отклика..