首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >9 9gag解析json

9 9gag解析json
EN

Stack Overflow用户
提问于 2012-12-28 01:43:06
回答 2查看 606关注 0票数 1

我想从以下地方随机挑选一张照片:

http://9gag.com/top/all/index/page/1?view=json

为了正确地显示它,我需要知道这个图像的大小。

我使用YQL将这个json的结果放入一个变量(称为)中。

我用http替换https,并删除每个反斜杠。

代码语言:javascript
复制
var it = $.parseJSON(source);
var total = it.count-1;
var random = Math.floor((Math.random()*total)+0);     
var gagurl = it.items[random];
var gagurldecode = gagurl.replace('\\','');
gagurldecode = gagurldecode.replace('https','http'); //here is the url of the image 

但我找不到这张照片的大小。

代码语言:javascript
复制
   var img = new Image();
   img.src = gagurldecode;

警报(img.height);什么也不返回。

如果我换掉

代码语言:javascript
复制
img.src = gagurldecode;

使用

代码语言:javascript
复制
img.src = 'http://d24w6bsrhbeh9d.cloudfront.net/photo/1777377_460s.jpg';

它起作用了。

我做错了什么?PS:对不起我的英语!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-28 01:55:08

这行没有必要,因为在解析JSON时,斜杠是转义的:

代码语言:javascript
复制
var gagurldecode = gagurl.replace('\\','');

对于实际问题,直到下载和检查图像之后才会填充heightwidth。如果浏览器没有看到映像(在onload事件处理程序中),则异步执行,但如果从缓存检索(如硬编码示例中的示例),则可以同步完成:

代码语言:javascript
复制
img.onload = function() {
    alert(img.height);
}

每次都会有用的。

票数 2
EN

Stack Overflow用户

发布于 2012-12-28 01:48:14

你为什么要打替换电话?这是不需要的,因为在字符串被解析为json之后,斜杠将不会为您转义。(此外,替换调用不是replaceAll)

试试这个:

代码语言:javascript
复制
//str is going to be the json you get from that url
var str = '{"items":["http:\/\/d24w6bsrhbeh9d.cloudfront.net\/photo\/5373376_460s.jpg","http:\/\/d24w6bsrhbeh9d.cloudfront.net\/photo\/2899638_460s_v1.jpg","http:\/\/d24w6bsrhbeh9d.cloudfront.net\/photo\/3196367_460s.jpg","http:\/\/d24w6bsrhbeh9d.cloudfront.net\/photo\/1777377_460s.jpg","http:\/\/d24w6bsrhbeh9d.cloudfront.net\/photo\/3233576_460s.jpg","http:\/\/d24w6bsrhbeh9d.cloudfront.net\/photo\/3101249_460s.jpg","http:\/\/d24w6bsrhbeh9d.cloudfront.net\/photo\/3279498_460s.jpg","http:\/\/d24w6bsrhbeh9d.cloudfront.net\/photo\/2487961_460s.jpg","http:\/\/d24w6bsrhbeh9d.cloudfront.net\/photo\/2693569_460s.jpg"],"layout":"list","count":9}'
var obj = JSON.parse(str);
var src = obj.items[~~(Math.random() * (obj.items.length - 1))];
img.src = src;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14063553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档