У меня есть эта функция javascript, которая служит для запроса AJAX для внешнего скрипта PHP, я хочу, чтобы это автоматически обновляло HTML <div>
, если новая проверка отличается от старой проверки.Auto Refresh JS Array при изменении содержимого?
<script>
window.setInterval(function()
{
$(function()
{
$.ajax({
url: 'api.php', data: "", dataType: 'json', success: function(rows)
{
for (var i in rows)
{
var row = rows[i];
var id = row[0];
var vname = row[1];
var Password = row[2]
$('#output').append("<hr />").append("<b>id: </b>"+id+"<b> name: </b>"+vname+" <b>Password: </b>"+Password);
}
}
});
});
}, 5000);
</script>
В настоящее время это успешно возвращает и обновляет DIV с содержимым из массива, проблема, так как добавление window.setInterval(function()
строки, он будет сервером соединения каждые 5 секунд и обновить <div>
с дублированием данных .. когда все, что я хочу, это для того, чтобы повторить новые данные (если есть пу)
Вот мой другой PHP скрипт:
$STD = new mysqli ("localhost", "root", "hidden", "ajaxrequests");
$array = array();
$Query = $STD->prepare ("SELECT * FROM ajaxdata");
$Query->execute();
$Query->bind_result($ID, $Name, $Password);
while ($Query->fetch())
{
$array[] = array ($ID, $Name, $Password);
}
echo json_encode($array);
Зачем использовать append вместо написания всего вывода? Кроме того, если вы хотите работать с самой строкой JSON и предполагать, что строка JSON не слишком велика, возможно, вы просто сохраните последнюю строку переменной, сравните ее с входящей строкой и ничего не сделаете, если они совпадут. Если они не совпадают, перезапишите весь элемент DOM новыми данными. –
@MikeBrant Не могли бы вы привести пример? – user2146021
@MikeBrant Кроме того, поскольку он настроен, он уже отправляет запросы каждые 5 секунд и сохраняет ответ. Почему бы просто не заменить контент с каждым запросом? Сравнение возвращаемого содержимого и текущего содержимого займет больше времени, чем просто обновление DOM независимо (поскольку кеш браузера очень эффективен). Если ваш ответ действительно большой, вы можете захотеть хэшировать его на стороне сервера и сравнить только хэширование браузера, чтобы проверить наличие обновлений. –