【问题标题】:newly appended elements disappear after reloading the page (jQuery)重新加载页面后新添加的元素消失(jQuery)
【发布时间】:2013-05-22 20:24:56
【问题描述】:

我在 AJAX 调用中使用 jQuery 的 .append() 将新的 li 元素添加到 success 上的 ul。问题是,每当我刷新页面时,新添加的列表项就会消失。

我读过这与刷新原始页面有关,并且某些选项是使用 cookie(PHP 或 jQuery)。我还看到了一些关于localStorage 的信息。我没有使用 HTML5,如果这很重要的话。

解决此问题的最佳方法是什么?如果我使用 PHP,我可以将脚本嵌入到 jQuery 中吗?有没有更优雅的方式来解决这个问题?

谢谢

编辑:包含代码

AJAX

$.ajax ({
type: 'post',
url: '/classes/resources/addResource.php',
data: {
    recName: $('#recName').val(),
    recURL: $('#recURL').val()
},
success: function(data) {
    if (data === 'added') {
        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);
        $('span#resError').fadeIn(400).text('Resource added successfully. Add another?');
   }
   else
       $('span#resError').fadeIn(400).text('There was an error adding this resource');
   }
});

HTML

<h3 class="category" id="1">
    Category 1
</h3>
<ul id="1">
    <li>List item 1</li>
    <li>List item 2</li>
    <li>List item 3</li>
    <li>List item 4</li>
</ul>

当我添加列表项 5 等时,我希望这些新列表项在刷新页面时保留。

【问题讨论】:

    标签: php jquery ajax append refresh


    【解决方案1】:

    如果您使用 ajax / javascript 动态构建页面,则需要存储当前状态,以便在重新加载页面时以完全相同的方式构建它。

    如果您需要构建页面的信息存储在客户端,则有几种方法可以做到这一点,例如会话(服务器端)或 cookie / localStorage。

    如果您不使用 html5 但使用 ajax 构建页面,则使用会话并在服务器端执行所有操作可能是最简单的选择。每次发出 ajax 请求时,只需存储页面的当前/更新状态。

    另一个考虑因素是信息必须保留多长时间。如果您使用标准的 php 会话机制,您的会话/状态将很快丢失(我认为使用默认设置大约需要一个小时而不重新加载/刷新)。

    【讨论】:

    • 谢谢。大部分页面是由我仅编写 HTML 呈现的。我有几个无序列表,我希望新添加的列表项无限期地保留(这些列表用于一堆 URL)。
    • @NojoRu 没有看到任何代码或示例很难判断,但您似乎需要将新添加的列表项(所有项...)添加到数据库并从中构建页面.
    • @NojoRu 我完全取决于原始列表的来源。我想那是一个数据库,所以需要添加新添加的项目。
    • 在数据库中存储用户的状态对我来说听起来有点矫枉过正。看看 PersistJS 之类的前端脚本吧? github.com/jeremydurham/persist-js 这将让您轻松使用具有出色跨浏览器支持的本地存储。但是,如果可能的状态种类相当有限,那么更面向 PHP 的解决方案(如建议的那样)可能就足够简单了。您能否在 AJAX 查询发生时更新 URL,然后检查该后端以查看用户处于什么状态?
    • @DonMcCurdy 你可能是对的,如果没有更多的上下文很难判断。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2012-01-14
    • 2018-08-20
    • 2022-07-12
    相关资源
    最近更新 更多