Код скрипта не втягивает данные Json в div

поэтому у меня есть файл javascript, который извлекает содержимое из файла json и использует данные для заполнения div на странице индекса с именем 'content', это мой файл javascript, но в настоящее время моя страница индекса пуста:

var wrapper = document.getElementById("content");

function init() {
loadJSON(function(e) {
    for (var t = JSON.parse(e), n = Object.keys(t.film).length, a = 0; a < n; a++) {
        var i = document.createElement("img");
        i.src = t.films[a].url, i.setAttribute("class", "filmimage"), wrapper.appendChild(i)
    }
})
}

 function loadJSON(e) {
 var t = new XMLHttpRequest;
t.overrideMimeType("application/json"), 
t.open("GET", "dist/json/data.json", !0), 
t.onreadystatechange = function() {
    4 === t.readyState && "200" === t.status && e(t.responseText)
 }, t.send(null)
 }
document.addEventListener("DOMContentLoaded", function() {
init()
});

Скачать файлы индекса и другие файлы можно здесь.

Код в порядке, пожалуйста, поделитесь URL-адресом, где я могу это проверить

Eitbiz 21.11.2018 13:12

@RobinB Сейчас он у меня только локально, есть ли способ отправить вам файлы или что-то в этом роде?

Remington 21.11.2018 13:17

Пожалуйста, заархивируйте файл и поделитесь ссылкой здесь. Поделюсь решением

Eitbiz 21.11.2018 13:18

Некоторые предложения, в том числе относительно вашего запутанного стиля кодирования: pastebin.com/AY7fU7sF

Chris G 21.11.2018 13:24

@RobinB Я добавил ссылку для скачивания в вопрос, дайте мне знать, если вам что-нибудь понадобится!

Remington 21.11.2018 13:24

Во-первых, вам понадобится 200 вместо "200", если вы собираетесь использовать ===. И у вас есть Object.keys(t.film), но он должен быть t.films.

Chris G 21.11.2018 13:28

В своем ответе я разместил новый js .. было две ошибки: одна - удалить "из 200", а другая - пленка должна быть пленкой.

Eitbiz 21.11.2018 13:41
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
7
35
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вот исправленный скрипт, использующий fetch() вместо устаревшего XMLHttpRequest:

var wrapper = document.getElementById("content");

function init() {
  fetch("dist/json/data.json").then(r => r.json())
    .then(data => {
      data.films.forEach(film => {
        var i = document.createElement("img");
        i.src = film.url;
        i.classList.add("filmimage");  // use CSS instead: #content img { ... }
        wrapper.appendChild(i)
      });
    })
    .catch(e => console.info(e));
}

document.addEventListener("DOMContentLoaded", init);
Ответ принят как подходящий

Вы можете использовать этот код в своем файле js

var wrapper = document.getElementById("content");

function init() {

    loadJSON(function(e) {
        console.info(e);
        for (var t = JSON.parse(e), n = Object.keys(t.films).length, a = 0; a < n; a++) {
            var i = document.createElement("img");
            i.src = t.films[a].url, i.setAttribute("class", "filmimage"), wrapper.appendChild(i)
        }
    });
}

function loadJSON(e) {
    var t = new XMLHttpRequest;
    t.overrideMimeType("application/json"), 
    t.open("GET", "dist/json/data.json", !0), 
    t.onreadystatechange = function() {
        4 === t.readyState && "200" == t.status && e(t.responseText)
    }, t.send(null)
 }


init();

Часть Object.keys() - ерунда; t.films - это массив. Это не ваша вина, но все равно нужно исправить.

Chris G 21.11.2018 13:43

Ах, это работает, спасибо! Извините, я пропустил эту часть, но еще раз большое вам спасибо!

Remington 21.11.2018 13:47

Другие вопросы по теме