Невозможно проанализировать действительный файл JSON - PullRequest
1 голос
/ 11 мая 2019

Logic

У меня есть файл JSON следующим образом:

[
    {
        "title":"Article Title 1",
        "url":"https://mywebsite.com/articles/article1.html",
        "type":"codes"
    },
    {
        "title":"Article Title 2",
        "url":"https://mywebsite.com/articles/article2.html",
        "type":"games"
    },
    {
        "title":"Article Title 3",
        "url":"https://mywebsite.com/articles/article3.html",
        "type":"codes"
    }
]

И я читаю этот файл, затем заполняю свою html-страницу для каждого элемента в файле (таким образом, на моей странице 3 заголовка, что означает 3 контейнера).

Проблема

Раньше не было ошибок, но теперь я получаю сообщение об ошибке в консоли: *SyntaxError: JSON.parse: expected ',' or ']' after array element at line 12 column 2 of the JSON data*

НО, все работает, если есть только 2 статьи! После добавления третьего набора данных возникает ошибка. Формат файла кажется правильным, в нужных местах есть ",", я преобразовал его в разные кодировки, но с той же ошибкой.

код

Основной запрос :

Я запрашиваю файл JSON при загрузке документа следующим образом:

$(document).ready(function(){
    var reqdata = new XMLHttpRequest();
    reqdata.open('GET', "https://website.com/dat/data.json");
    reqdata.onload = function() {
        if (reqdata.status >= 200 && reqdata.status < 400) {
            try{
                var postData = JSON.parse(reqdata.responseText);
                render_posts(postData); // this creates dynamic content in html
                //console.log(postData);
            } catch (err) {
                alert(" JSON Parse Error :'( ")
            }
        } else { alert("JSON Requestion Server Error!") }
    }; reqdata.onerror = function() { alert("JSON Request Connection Error!") };
    reqdata.send();
});

Заполнение HTML :

Это вызывается из кода выше, если JSON.parse работает. Эта часть отлично работает, просто для справки ..

function render_posts(data) {
    var htmldata = ""; var cardId = "";
    for (var x = 0; x < data.length; x++) {
        cardId = "card-type-" + data[x].type;
        htmldata += "<div class='card' id='" + cardId + "' onclick='card_clicker(\"" + data[x].url + "\")'><div class='header'>" + data[x].title + "</div><div class='decor'></div></div>";
    }
    cardWrapper.insertAdjacentHTML('beforeend', htmldata);
}

Справка : Любая помощь приветствуется. Не могу понять, в чем реальная проблема. Файл JSON выглядит нормально. Я попытался отформатировать его онлайн, но результаты те же. Я совсем новичок в AJAX. Пробовал другие решения на stackoverflow, но все тот же ..

Ответы [ 2 ]

0 голосов
/ 28 мая 2019

Это небольшая проблема с декодированием URL при декодировании JSON.Вместо добавления URL-адреса, например:

"url":"https://mywebsite.com/articles/article2.html"

Должен быть задан обратный слэш управляющего символа следующим образом:

"url":"https:\/\/mywebsite.com\/articles\/article2.html"

И теперь все работает отлично!

0 голосов
/ 11 мая 2019

Вероятно, трудно заметить где-то дополнительные символы или использовать нестандартные двойные кавычки или какой-то другой символ, который не такой, как вы думаете (запятая?)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...