【问题标题】:JSON Data Not Showing In PlunkerJSON 数据未显示在 Plunker 中
【发布时间】:2015-01-04 08:07:00
【问题描述】:

我无法在 Plunker 上将 JSON 数据文档显示/输入到 HTML 文档中。

当前正在使用的JS:

$(document).ready(function() {

  //Content Viewer Information
  function checkViewers() {
    //Base Variables
    var viewer = $('#viewed span.user');
    var totalViews = $('#viewed span.user').length;
    var shortenViews = $('#viewed span.user').length -1;

    if (totalViews === 0) {
        $('<span> 0 people have </span>').insertBefore($('#viewed span:last-child'));
    }
    if (totalViews === 2) {
        $('<span> and </span>').insertAfter(viewer.first());
    }
    if (totalViews >= 3) {
        viewer.slice(1).hide();
        $('<span> and </span>').insertAfter(viewer.first());
        $('<span class="user count"></span>').insertAfter(viewer.eq(2));
        $('.count').html(shortenViews + ' more people');
    }
  }

  checkViewers();

  //JSON Data
  var xhr = new XMLHttpRequest();

  xhr.onload = function() {
      if (xhr.status === 200) {
          responseObject = JSON.parse(xhr.responseText);

          var newViewers = '';
          for (var i = 0; i < responseObject.profiles.length; i++) { 
              newViewers += '<span class="user">' + responseObject.profiles[i].firstName + ' ';
              newViewers += responseObject.profiles[i].lastName + '</span>';
          }

          //Update Page With New Content
          var viewerSection = $('#viewed');
          viewerSection.innerHTML = newViewers;

      }
  };

  xhr.open('GET', 'data.json', true);
  xhr.send(null);
  console.log('JSON Fired');

});

JSON 数据应输入到 div #viewed 与观众的名字和姓氏。我对 Plunker 不太熟悉,所以我不确定我是否在 Plunker 内部做错了事情,或者当前代码的一部分是否导致无法输入 JSON 数据。

查看当前Plunker

【问题讨论】:

    标签: javascript jquery json plunker


    【解决方案1】:

    问题是你混合了 jQuery 和原生 dom 方法然后对什么是什么感到困惑

    这会返回一个 jQuery 对象:

    var viewerSection = $('#viewed');
    

    这是将属性应用到不会更新 DOM 的 jQuery 对象,因为它没有被应用到 DOM 节点:

     viewerSection.innerHTML( newViewers);
    

    要使用 jQuery 设置 html,您需要使用 html() 方法:

     viewerSection.html( newViewers);
    

    或者使用你需要做的本地方法来设置它

    var viewerSection = $('#viewed')[0]; /* returns the DOM node from jQuery object */
    /* or */
    var viewerSection = document.getElementById('viewed');
    /* then */
    viewerSection.innerHTML( newViewers);
    

    对于 DOM 操作,我建议您选择 jQuery 或原生 javascript,并坚持使用其中一种,不要混合使用它们

    Working Demo Using html()

    【讨论】:

    • 还请注意,由于您使用的是 jQuery,因此 jQuery ajax API 比原生 XMLHttpRequest 更易于阅读,并且有一个简单的成功和错误回调系统
    猜你喜欢
    • 2019-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-20
    • 2020-02-21
    • 2020-06-14
    • 1970-01-01
    相关资源
    最近更新 更多