Функция jQuery не обновляет данные при обновлении в базе данных - PullRequest
1 голос
/ 27 мая 2020

Я хотел бы обновить данные во внешнем интерфейсе, когда они изменяются в базе данных. Код, который я использую, приведен ниже:

<script src="https://code.jquery.com/jquery-3.5.0.js"></script>
<div id="test">
    <?php
        include('conn.php');
        $query = "SELECT name FROM user_details WHERE user_id = 1;";
        if(mysqli_fetch_assoc(mysqli_query($conn, $query))["name"] == "MyName")
            echo 'Hi <b>MyName!</b>';
        else
            echo 'You are not <b>MyName</b>.';
    ?>
</div>
<script>
    setInterval(function(){
        $.get("/test.php", function(data){
            let $data = $(data);
            $("#test").append($data.find("#test > *"));
        });
    }, 1000);
</script>

Однако, когда данные обновляются, они не обновляются во внешнем интерфейсе до тех пор, пока не будут обновлены. Когда я использую функцию jQuery load(), она работает отлично. Почему это не работает?

1 Ответ

0 голосов
/ 27 мая 2020

Как я предложил в комментарии, если вы создадите автономный PHP Script, это может выглядеть так:

getUserName. php

<?php
$id = (int)$_GET['id'];
include('conn.php');
$query = "SELECT name FROM user_details WHERE user_id = $id;";
$myName = "";
if ($result = mysqli_query($conn, $query)) {
  while ($row = mysqli_fetch_assoc($result)) {
    $myName = $row;
  }
}
mysqli_free_result($result);
mysqli_close($conn);
header('Content-Type: application/json');
echo json_encode($myName);
?>

Это очень простой пример c, и я бы настоятельно посоветовал вам переключиться на использование подготовленных операторов, чтобы избежать риска SQL инъекции.

В вашем HTML вы теперь можно сделать:

<script>
setInterval(function(){
  $.getJSON("/getUserName.php", { id: 1 }, function(data){
    $("#test").append(data.name);
  });
}, 1000);
</script>

Это будет пинговать скрипт каждую секунду, и у вас будет отображаться список имен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...