JavaScript (Ajax) + PHP - получение (и изменение ??) ссылки в зависимости от функции PHP - PullRequest
1 голос
/ 28 мая 2020

Я новичок. Я чувствую, что что-то упускаю в своем мыслительном процессе. Я пробовал много разных вещей.

Я кодирую простую кнопку «Нравится» в каждое сообщение на моем сайте. У меня есть три PHP функции, связанные с этим:

  • isLiked($id) использует $_Get['id'] для сообщения и IP-адрес пользователя ($_SERVER['REMOTE_ADDR']), чтобы проверить, понравился ли пользователю уже этот конкретный пост.
  • likes() вставляет лайк в базу данных - он также использует $_GET['id']
  • getLikes($id) получает количество лайков для каждого $id

likePost. php - это простая страница, которая просто вызывает likes() (вставляет подобное в базу данных) и отображает результат, который равен getLikes($id). Да, я вызвал функцию внутри функции.

JavaScript, над которым я работаю, выглядит так (я НЕ обещаю, что это хорошо JS).

function likeButton() {
    $.ajax({
        url: "../../likes/",  //This is likePost.php, after .htaccess rewrite
        type: "post",
        data: {
            id:id },
        success: function(likes) {
            somethingHereIDontKnowWhat(likes);  //UGH
        }});
}

и моя ссылка прямо сейчас (без JavaScript) + количество лайков теперь выглядит так:

echo "<br/><div class='right'><a href='../../likes/" . $post->id . "'>
<img src='/images/like.png' title='Like this' alt='Like button'></a>" . getLikes($post->id) . "<div><br/>";

Я не могу обернуть голову, используя JS для запуска функции PHP (при отправке $ post_id URL-адресу для создания $ _GET ['id'], но также с использованием (того же?) JS для печати и обновления количества лайков при нажатии ссылки. Это как минимум две вещи, которые функция выполняется одновременно - или я полностью потерялся?

Какой должен дать мне количество лайков (скрестите пальцы !!), но мне нужен способ включить isLiked() в него, так как ссылка должна быть отключена if isLiked() = true.

1 Ответ

1 голос
/ 28 мая 2020

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

Сначала дайте вашему div идентификатор и избавьтесь от ссылки .

echo "<br/><div class='right' id="post' . $post->id . '">
<img src='/images/like.png' title='Like this' alt='Like button' onClick="likeButton(' . $post->id . ')">" . getLikes($post->id) . "<div><br/>";

Затем вы можете обновить содержимое в div после успеха ajax. Это обновит общее количество и удалит похожее изображение.

function likeButton(id) {
    $.ajax({
        url: "../../likes/",  //This is likePost.php, after .htaccess rewrite
        type: "post",
        data: {
            id:id },
        success: function(likes) {
            $('#post' + id).html(likes);
        }});
}

Надеюсь, это было то, о чем вы просили.

Также не следует использовать IP-адрес для отметки постов как понравившихся. IP-адреса могут меняться, также несколько человек могут использовать один и тот же IP-адрес. Лучше установить повар ie для каждого поста, который понравился пользователю.

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