Как попросить javascript подождать, пока mysql присвоит значение переменной php?

#php #javascript #mysql

#php #javascript #mysql

Вопрос:

 <?php
  $query3 = "SELECT message FROM messageslive LIMIT 1";
  $result3 = mysql_query($query3,$connection) or die (mysql_error());
  confirm_query($result3);
  while($userinfo3 = mysql_fetch_array($result3)){
      $msgLive = $userinfo3['message'];
  }
?>

<script type="text/javascript">
  var msg = "<?php echo $msgLive ; ?>";
</script>
  

Что меня беспокоит, так это то, что в таблице базы данных слишком много данных для поиска и извлечения, поэтому переменная PHP $msgLive еще не имеет значения, поэтому переменная Javascript var msg получает пустое значение. Как попросить javascript подождать, пока переменная PHP $msgLive не получит значение, а затем только передать значение из переменной php в Javascript?

Ответ №1:

Вам не стоит беспокоиться об этом, потому что сначала выполняется серверный скрипт, не торопится взаимодействовать с базой данных, присваивает msgLive переменной значение и, наконец, генерирует HTML, который отправляется клиенту. В течение всего этого времени клиент ждет (и, вероятно, проклинает своего провайдера за медленное соединение, которое он испытывает :-)). Таким образом, как только HTML-код попадет в клиентский браузер, переменной javascript будет присвоено значение. Таким образом, нет необходимости указывать javascript на ожидание, javascript даже не существует, пока сервер не завершит свою работу и не отправит HTML клиенту.

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

1. что, если я добавлю другие php-коды <?php $ msgLive=»12345″ ?> под кодами javascript? Значение переменной javascript var msg станет «12345»?

2. @zac1987, неважно, куда ты это поместил. Вы действительно должны различать код на стороне сервера и код на стороне клиента. Это два совершенно разных процесса, происходящих в два разных момента времени. Сначала сервер, который генерирует HTML, который отправляется клиенту, а затем клиент получит его, и если этот HTML содержит javascript, он будет запущен внутри браузера, …

3. Таким образом, сообщение var станет «12345». Я это уже понял. Спасибо.

4. но когда я объявляю <?php $ username=»abc»; ?> тогда я оповещаю javascript («<?php echo $ username; ?>»); это оповещение об успехе «abc». Но когда я переключаю код javascript на приведенный выше php-код, он не выдает предупреждение «abc». Если, как вы сказали, php run finish 1st, тогда запускайте только javascript. Почему javascript не выдает предупреждение о значении переменной php?

5. @zac1987 Javascript НИКОГДА не будет выполняться до php, в этом нет смысла!