我是jQuery和JavaScript的新手,所以请耐心等待。我正在尝试执行一个AJAX get请求来检索我的JSON文件,其中包含的轨道信息的格式如下:
[
{
"name" : "Short Skirt, Long Jacket",
"artist" : "Cake",
"album" : "Comfort Eagle",
"genre" : "Rock",
"year" : 2001,
"albumCoverURL" : "images/ComfortEagle.jpg",
"bandWebsiteURL" : "http://www.cakemusic.com"
},
{
...
}
]
我正在尝试使用这两个函数:
function loadJSON ()
{
$.getJSON("lab4.json", updateHTML(result));
}
$(document).ready(function ()
{
$("site").click(function ()
{
loadJSON();
});
});
当用户点击ID为#34; site"的链接时我想发送一个异步javascript调用来检索我的JSON文件。成功后,它应该在这里调用我的updateHTML函数:
function updateHTML (result)
{
var templateNode = document.getElementById("song-template").cloneNode(true);
document.removeChild(getElementById("song-template"));
$.each(result, function(i, song)
{
var songNode = templateNode.cloneNode(true);
});
}
现在,我已经陷入困境:现在我有了这个克隆节点,如何使用jQuery填写HTML中的所有字段:
<a id="site" href="#"><img id="coverart" src="noalbum.png" /></a>
<h1 id="title"></h1>
<h2 id="artist"></h2>
<h2 id="album"></h2>
<p id="date"></p>
<ul id="genres"></ul>
通常,我会像:
$("site").attr("src","images/ComfortEagle.jpg");
但现在我遇到了两个问题。一,如何从我读过的JSON对象中获取新的url&#39; song&#39;,以及两个,我如何定位&#34; site&#34;在我将其添加回文档的html之前克隆的节点中的id?谢谢!
答案 0 :(得分:0)
您可以从密钥中连接ID
$.each(dataObj, function(key, val) {
//dataObj is your returned JSON
if ($("#" + key).length)
$("#" + key).val(val);
});
答案 1 :(得分:0)
首先,如果你要使用jquery,请使用jquery。
您可以使用ejquery clone()方法而不是js cloneNode来实现此目的。
我认为这是你尝试用更多jquery ish解决方案做的事情。
var song = [1,2,3,4];
var templateNode = $("#lala");
$.each(song, function(key, val){
var songNode = templateNode.clone(true);
songNode.children('span.yo').text(val);
$('#wrap').append(songNode);
});
对于json解析的AS,在每次迭代时,你应该能够像任何其他json一样访问道具,所以在每个循环中,只需定位一个道具,如:
song.albumCoverURL