在我正在处理的网站上,我有一个管理员面板,允许管理员将列表项添加到现有的无序列表中。这是使用带有 jQuery 的 AJAX 表单完成的.append()
。列表项是 URL,并使用 PHP 插入到数据库中。这部分有效。
无论管理员是否登录,我都需要能够使用新列表项重新加载页面(例如,我希望所有用户都可以使用更新的列表)。我知道我不能这样做,除非我使用会话、cookie 或某种本地存储/持久存储实用程序。
如果我决定使用像 persistJS 这样的东西,我需要保存什么以便以后重新加载?整个<ul>
? 整个文件?
如果我使用 PHP 会话,我会怎么做?
以下是一些示例列表和表格
<h3 class="category">
List 1
</h3>
<ul id="1">
<li>List item 1</li>
<li>List item 2</li>
</ul>
<br />
<h3 class="category">
List 2
</h3>
<ul id="2">
<li>List item 1</li>
<li>List item 2</li>
<li>List item 3</li>
<li>List item 4</li>
</ul>
<form id="addRec_form" action="classes/resources/addResource.php" method="post">
<p><select name="categoryList" id="categoryList">
<option value="0">Select a list to add to</option>
<option value="1">List 1</option>
<option value="2">List 2</option>
</select></p>
<p>Resource name: <input type="text" name="recName" id="recName" /></p>
<p>Resource URL: <input type="text" name="recURL" id="recURL" /></p>
<p><input type="submit" name="submitAddRec" value="Add resource" id="submitAddRec" /></p>
</form>
和 AJAX:
$.ajax ({
type: 'post',
url: '/classes/resources/addResource.php',
data: {
recName: $('#recName').val(),
recURL: $('#recURL').val()
},
success: function(data) {
if (data === 'added') {
function updateLists() {
var h3ID = $('#categoryList option:selected').val();
var title = $('#recName').val();
var url = $('#recURL').val();
var newListItem = '<li><a href=\"' + url + '\">' + title + '</a></li>';
$('ul#' + h3ID).append(newListItem);
}
}
else
$('span#resError').fadeIn(400).text('There was an error adding this resource');
}
});
再次,PHP 工作。AJAX 甚至可以工作,因为我可以看到新列表项被添加到适当的列表中。当我刷新页面时,新列表项显然不存在。
有意义的是,无论我需要做什么来保存新的 DOM 状态,都需要在 AJAX 成功部分中完成。
我只是不知道如何开始。有人可以为我提供一些我想要完成的示例代码吗?不管是服务器端还是客户端。
谢谢!
编辑:是否可以在第一次成功后进行额外的 AJAX 调用?例如,在第一个 AJAX 请求成功后,将进行一个新的 AJAX 调用,该调用将使用 PHP 添加新的列表项,以便它在页面重新加载时出现?