将JSON代码传输到外部文件时出现问题

Issue transferring JSON code to extern file

本文关键字:问题 文件 外部 JSON 代码 传输      更新时间:2023-09-26

我有一些JSON代码的问题。我在这里尝试在<p>中随机附加一些位于外部JSON文件中的字符串。我成功地使它在代码笔上工作:http://codepen.io/ChucKN0risK/pen/LcFop

问题是,我没有成功地使我的代码在外部JSON文件上工作。当我刚开始学习JSON时,我甚至不确定我是否需要一个表,或者只需要3个具有各自值的标题。

经过搜索,我发现要使其工作,我必须将代码放入Jquery中的每个事件中。

$.each(data, function(i, item) {
    alert(data[i].PageName);
});​

然而,无论我把代码放在哪里,它似乎都没有被考虑在内,因为我的console.log测试不起作用。

这是我的javascript代码:

// Sentences
var p = $('#sentences-wrapper');
$.getJSON('src/js/data.json', function(data) {
    var random = data.sentences[Math.floor(Math.random() * data.sentences.length)];
    p.append("<span>" + random.title + "</span>");
});

这是我的JSON代码:

{
    "sentences": [{
        "title": "la big data"
    }, {
        "title": "développer des applications ergonomiques, simples et sur mesure"
    }, {
        "title": "chorégraphier des services et orchestrer de la donnée"
    }]
};
var p = $('#sentences-wrapper');
$.getJSON('src/js/data.json', function(data) {
    var random = data.sentences[Math.floor(Math.random() * data.sentences.length)];
    p.append("<span>" + random.title + "</span>");
});

getJSON回调中的data参数应该是JSON文件的内容,该文件已经解析为JS对象。在这种情况下,data.sentences应该与代码笔示例中的jsonContent.sentences相同。

在您的代码笔中,json位于"jsonContent"中,它有带标题的"句子"。

在getJSON语句中,data.json文件的内容被分配给var"data">

所以你的标题存在于data.sentences.title中,正确的代码应该是:

$.each(data, function(index, value){
    var random = data.sentences[Math.floor(Math.random() * data.sentences.length)];
    console.log(random.title); // <= should work now
    p.append("<span>" + random.title + "</span>");
});

我不知道你为什么添加$.each函数。您的原始代码笔示例从json中随机打印1个句子。使用$.each语句,可以为json中的每个元素(ea语句(附加一个随机语句。这应该会导致双打和其他一些没有被打印出来的比赛。(编辑:这不是真的,因为json只包含一个itmes(句子(列表。当然,你没有使用值或索引。在这种情况下:data.sentences、value、data[index]都是相同的标题列表。(

如果你想按随机顺序打印所有的句子,你必须重新思考一下代码。

在控制台中查看后,我发现我的JSON文件格式不正确。我不得不删除代码末尾的";"。http://jsonformatter.curiousconcept.com/.无论如何,感谢你们的帮助:(