【问题标题】:Using the attributes of an external JSON file使用外部 JSON 文件的属性
【发布时间】:2013-08-12 20:04:55
【问题描述】:

我在 drawImage 命令上得到一个“Uncaught TypeError”,因为我认为图片的 url 没有正确提取。图片的路径是正确的(它们的文件夹与 JavaScript 文件在同一文件夹中)。如何引用 JSON 文件中的单个属性?

提前致谢。

这是 JSON:

{
    "characters": [
        {
            "greekName": "Zeus",
            "romanName": "Jupiter/Jove",
            "description": "",
            "picUrl": "pics/zeus.jpg"
        },
        {
            "greekName": "Hera",
            "romanName": "Juno",
            "description": "",
            "picUrl": "pics/hera.jpg"
        },
        {
            "greekName": "Poseidon",
            "romanName": "Neptune",
            "description": "",
            "picUrl": "pics/poseidon.jpg"
        }
    ]
}

相关html:

    <canvas id="slideshow" width="400" height="400"></canvas>

这里是相关的.js代码:

var aImages = [];
canvas = document.getElementById('slideshow');
ctx = canvas.getContext('2d');

 $(document).ready(function () {
    $.getJSON("c.json?callback=?", function (data) {  
        $.each(data.characters, function (i, item) {
            var oImg = new Image();
            oImg.src = item.picUrl;
            aImages.push(oImg);
        }
    );
    });
});

ctx.drawImage(aImages[iCurSlide], 0, 0);

【问题讨论】:

  • 你是从外部文件读取json吗???
  • 是的,c.json 是我的外部文件。

标签: jquery json getjson each drawimage


【解决方案1】:

ctx.drawImage(aImages[iCurSlide], 0, 0); 放在getJSON 回调中。

var aImages = [];
canvas = document.getElementById('slideshow');
ctx = canvas.getContext('2d');

$(document).ready(function () {
    // get json
    $.getJSON("c.json?callback=?", function (data) {  
        $.each(data.characters, function (i, item) {
            var oImg = new Image();
            oImg.src = item.picUrl;
            aImages.push(oImg);
        });
        // aImages is an array with elements
        // go for each element from array, and draw it.
        for (var i in aImages) {
            ctx.drawImage(aImages[i], 0, 0);
        }
    });
});

【讨论】:

  • 谢谢,但如果我这样做,它突然找不到文件(“加载资源失败:服务器响应状态为 404”)。原来的错误仍然存​​在。
  • @annioid 也许你需要图像的绝对路径。例如:/pics/zeus.jpg
  • 很遗憾,没有任何变化。
  • @annioid 请为该问题创建一个 JSFiddle。
  • 对JSFiddle不熟悉,怎么添加json文件?
猜你喜欢
  • 1970-01-01
  • 2013-06-30
  • 1970-01-01
  • 1970-01-01
  • 2018-04-01
  • 2012-04-08
  • 2018-08-01
  • 2012-04-25
  • 1970-01-01
相关资源
最近更新 更多