2012-03-22 115 views
1

我通过ajax和回调获取了一些html内容我想获取所有src路径并将它们转换为json。我总是得到404错误,因为它加载了图像。我怎样才能加载它呢?另外,我发现了错误:遗漏的类型错误:转换圆形结构,以JSON获取img的src路径并将其转换为json

这里有一个演示:http://jsfiddle.net/QgFMe/

我能想到的唯一的事情是正则表达式,但我宁愿一个非正则表达式的解决方案。

感谢

+0

我见过这个之前(但无法找到问题) - 在这种情况下,似乎正则表达式是唯一可行的答案 - 如果您使用它来解析HTML,jQuery会尝试加载图像,正如你发现的那样。 – Alnitak 2012-03-22 15:57:22

回答

1

尝试:

$(document).ready(function() { 
    var pics = []; 
    $(this).find("img").each(function() { 
     pics.push($(this).attr("src"));                                   
    }); 

    console.log(pics); 

    var json_data = JSON.stringify(pics); 

    console.log(json_data); 
}); 
+0

如果你使用'map',你可以这样做:'var pics = $(this).find(“img”)。map(function(){return this.src;});' – andlrc 2012-03-22 16:04:35

+0

如果你你将会使用'.each()'而不是'.map()'来累积自己,但是正确的答案是使用'.map(...)。get()'来代替。 – Alnitak 2012-03-22 16:05:45

+0

@AndreasAL你还需要'.get()' – Alnitak 2012-03-22 16:06:06

0

要解决你的JSON错误的.map()输出传递到.get()

这种转换通过.map()返回到真正的数组伪jQuery对象:

var pics = $(this).find("img").map(function() { 
    return this.src;                                   
}).get(); 

NB:$(this).attr('src') === this.src

我不知道解决您的404错误,但 - 见上述评论。