在我正在处理的网站上,我有一个管理员面板,允许管理员将列表项添加到现有的无序列表中。这是使用带有jQuery .append()
的AJAX表单完成的。列表项是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添加新的列表项,以便它在页面重新加载时出现?