Подскажите пожалуйста, почему ответ от сервера (из консоли Google Chrome, вкладка Response), не отображается сразу на странице, а только после её обновление или перезагрузки?
Например: настоящий счётчик кнопки DisLike есть 299 (голосов), а после клика на кнопку - остаётся так же 299. А в консоли браузера, ответ сервера показывает страницу на которой уже 300 голосов! И только когда я её обновлю или перезагружу, тогда и на смой странице показывается инкремент, т.е. уже 300. Почему так? Может, кто-то подскажет и как это исправить, чтобы после клика, на странице сразу срабатывал инкремент (+1 к предыдущему) голосов?!
index.php
require_once('/dislike.php'); // обработчик кнопоки DisLike
$ds = "mysql: соединение с БД";
$pd = new PDO($ds, 'xxxxxxxxx', 'xxxxxxxx');
$statemen = $pd->query("SELECT `value` FROM DisLike WHERE `iddislike` = 1");
$dislike = (int)$statemen->fetchColumn(); // для DisLike
<div class="block-down"> <!-- кнопка DisLike -->
<form id="ratingsDislike" method="post">
<button id="btnDislike" type="button"><i id="thumbs-down" class="far fa-thumbs-down"></i></button>
</form>
<div class="content-dislike-like">
<span class="holding">I'm not holding a grudge...</span> 
<p id="dislike_count"><?php echo $dislike ?></p>
</div>
</div>
main.js
$("#btnDislike").on('click', function(e) {
e.preventDefault();
var ajax = $.ajax({
method: 'post',
url: "https://site.com/dislike.php",
dataType: 'text',
data: {
'countDislike': 1
}
});
ajax.done(function() {
counter++;
$("#dislike-count").text(Number($("#dislike-count").text()) + 1);
});
});
dislike.php
declare(strict_types = 1);
error_reporting(E_ALL);
// конфигурация БД
$xxxxx = 'xxxxxx'; // имя сервера
$xxxxx = 'xxxxxx'; // название БД
$xxxxx = 'xxxxxx'; // имя пользователя БД (Логин)
$xxxxx = 'xxxxxx'; // пароль
$ds = "mysql:соединение с БД";
try {
$pd = new PDO($ds, 'xxxxxxxx', 'xxxxxxx');
// Для таблице DisLike
if (isset($_POST['countDislike']) && (int)$_POST['countDislike'] === 1) {
$stm = $pd->query("SELECT `value` FROM DisLike WHERE `iddislike` = 1"); // Для DisLike
$dislike = (int)$stm->fetchColumn();
$dislike++;
$paramsDisLike = [':iddislike' => 1, ':value' => $dislike];
$quer = "UPDATE `DisLike` SET `value` = :value WHERE `iddislike` = :iddislike";
$stm = $pd->prepare($quer);
$stm->execute($paramsDisLike);
echo json_encode($dislike);
}
}
catch(Exception $ed) {
echo $ed->getMessage();
}
И второй вопрос, может кто подскажет ... Как мне сделать так, чтоб нажатие на кнопку было единственным от каждого нового пользователя. Ведь применяю БД для подсчёта голосов, но регистрацию на сайте, я не применяю. Соответственно, аутентификация на сайте по логину и паролю отсутствует.
Знаю, что 'nj нужно как-то написать в dislike.php. Идентификация должна быть, наверное, по ID-компа. Но как это написать?? Рассчитываю на Вашу помощь.