2012-03-22 113 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錯誤,但 - 見上述評論。