javascript - 使用 JQuery 将 JSON 数据传递到 DIV 中

标签 javascript jquery html css json

您好,我有专家的以下建议,我正在尝试根据这些建议重建我的代码:

  • 您可以从 $.each() 返回 true 或 false。如果返回 false,则 循环停止。
  • 尽量不要从连接的字符串构建 HTML。这很容易发生XSS 容易避免的漏洞。 jQuery 为您提供了工具 安全地构建 HTML。
  • 一般来说,出于同样的原因,尽量避免使用 .html(), 特别是如果您已经有了要使用的 DOM 元素。
  • 不要使用 onclick 等内联事件处理程序。完全没有。曾经。

这是我正在处理的新代码:

var page = 1;
$(document).on('click', '#devotionclick', function blogs() {
    $('#postlist').empty();
   // $('#category').prepend('<div class="categories_listing"><span data-type="blogs" data-category="5">Blog Category</span></div>');
    var count = "5";
    var result = $.getJSON('http://howtodeployit.com/api/get_posts/?count=' + count + '&page=' + page, function (data, status) {
        if (data !== undefined && data.posts !== undefined) {
            $.each(data.posts, function (i, item) {    
                var str = item.title;

                $('#postlist').append('<div class="article"' + item.id + '"><div>' + item.title + '</div><div>' + item.excerpt + '</div></div>');
                if (data !== undefined) {
                    $('#stats').text('Page ' + data.query.page + ' of ' + data.pages + ' | Total posts ' + data.count_total + '');
                }
                if (data.query.page < data.pages) {
                    $("#loadmore").show();
                } else {
                    $("#loadmore").hide();
                }
            });
            page++;
        }
    });
    $('#postlist').append('<div id="loadmore"><div id="stats"></div><div id="loadmore">load more</div></div>');
    $('#loadmore').click(blogs);
});

HTML:

!-- Page: home -->
    <div id="home" data-role="page">
        <div class="ui_home_bg" data-role="content"></div>
        <div data-role="listview">
            <a href="#devotion" id="devotionclick" data-role="button">Daily Devotional Messages</a>
        </div><!-- links -->
    </div><!-- page -->

<!-- Page: Daily Devotional Messages -->
    <div id="devotion" data-role="page">
        <div data-role="header" data-position="fixed">
            <h2>Daily Devotional Messages</h2>
        </div><!-- header -->
        <div data-role="content" id="postlist"> </div><!-- content -->
    </div><!-- page -->

我现在遇到的问题是:

  1. 当我点击按钮时,它会加载前 5 个帖子,但当我点击“加载更多”文本时,它会加载接下来的 5 个,而不是附加到现有列表。

  2. 列表未显示为应可点击的 ListView 元素

最佳答案

问题1
这是因为点击处理程序中的 $('#poSTList').empty();.... 在加载新元素之前,您要从页面中删除所有元素。删除这个

关于javascript - 使用 JQuery 将 JSON 数据传递到 DIV 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19376143/

相关文章:

javascript - TinyMCE 在 fancyBox 弹出窗口中不起作用

html - 使用 CSS 均匀分布高度

javascript - shopify 和 instafeed.js 兼容性问题

javascript - pdf指令不在Angular JS中显示pdf文件

javascript - 在Django中,如何使选择下拉选项自动提交表单?

javascript - 使用 JavaScript 将输入发送到 url 并控制 iframe 直到提交?

html - 在一个 div 中居中放置三个图像

javascript - 获取所有没有id的div

javascript - Modernizr 与 cssSandpaper?

javascript - 变量拒绝在 jQuery.get 回调函数中取值