Я пытаюсь создать функцию «читать позже» (избранное) для моего блога.
Я хочу использовать localalstorage, чтобы сохранить postID моих сообщений в блоге (часто очень короткие) в формате json, а затем с помощью простого AJAX (без jquery) POST и php GET показать сообщение о сохранении на одной странице
Я записываю список postID в localalstorage следующим образом save.php:
<html>
<head>
<style>
.list li {
cursor: pointer;
}
.list li:hover:after,
.list li.fav:after {
content: ' \2605';
color: rgb(255, 203, 0);
}
.list li.fav:hover:after {
content: ' \2606';
}
</style>
</head>
<body>
<ul class="list">
<li id="1">PostID1</li>
<li id="2">PostID2</li>
<li id="3">PostID3</li>
<li id="4">PostID4</li>
<li id="5">PostID5</li>
<li id="6">PostID6</li>
</ul>
<script>
// get favorites from local storage or empty array
var favorites = JSON.parse(localStorage.getItem('favorites')) || [];
// add class 'fav' to each favorite
favorites.forEach(function(favorite) {
document.getElementById(favorite).className = 'fav';
});
// register click event listener
document.querySelector('.list').addEventListener('click', function(e) {
var id = e.target.id,
item = e.target,
index = favorites.indexOf(id);
// return if target doesn't have an id (shouldn't happen)
if (!id) return;
// item is not favorite
if (index == -1) {
favorites.push(id);
item.className = 'fav';
// item is already favorite
} else {
favorites.splice(index, 1);
item.className = '';
}
// store array in local storage
localStorage.setItem('favorites', JSON.stringify(favorites));
});
// local storage stores strings so we use JSON to stringify for storage and parse to get out of storage
</script>
</body>
</html>
Возвращает следующие данные локального хранилища (если я добавлю postID 1 и 2):
favorites ["1","2"]
С чем я борюсь, так это с тем, как передать данные (угадайте немного AJAX, но я не знаю, как это сделать) на мой запрос, который показывает сообщения.
Если я вставлю значения вручную (см. Переменную $ q, она работает, но я не знаю, как это сделать с простым ajax.
Список сообщений, в котором я хочу, чтобы передаваемые данные находились в файле see-save-posts.php
<?php require('includes/config.php'); ?>
<?php
$q = ("1,2");
try {
$stmt = $db->query('SELECT postID, postTitle, postSlug, postDesc, postDate FROM blog_posts_seo WHERE postID IN ('.$q.') ');
while($row = $stmt->fetch()){
echo '<div>';
echo '<h1><a href="'.$row['postSlug'].'">'.$row['postTitle'].'</a></h1>';
echo '<p>Posted on '.date('jS M Y H:i:s', strtotime($row['postDate'])).' in ';
$stmt2 = $db->prepare('SELECT catTitle, catSlug FROM blog_cats, blog_post_cats WHERE blog_cats.catID = blog_post_cats.catID AND blog_post_cats.postID = :postID');
$stmt2->execute(array(':postID' => $row['postID']));
$catRow = $stmt2->fetchAll(PDO::FETCH_ASSOC);
$links = array();
foreach ($catRow as $cat)
{
$links[] = "<a href='c-".$cat['catSlug']."'>".$cat['catTitle']."</a>";
}
echo implode(", ", $links);
echo '</p>';
echo '<p>'.$row['postDesc'].'</p>';
echo '<p><a href="'.$row['postSlug'].'">Read More</a></p>';
echo '</div>';
}
} catch(PDOException $e) {
echo $e->getMessage();
}
?>
Заранее спасибо. Постскриптум Я новичок в этом сообществе, но использую его годами. Обычно я могу найти ответ через функцию поиска, но не в этот раз.