分别使用两个getJSON调用
Use two getJSON calls separately
我试图使用两个getJSON调用来实现两个不同(但几乎相同)的目的。我是一个新手,但我能够拼凑出以下代码:
$(function() {
var call1, call2;
jQuery.when(
jQuery.getJSON('https://api.composer.nprstations.org/v1/widget/517ed638e1c8d825471462ff/tracks?format=json&limit=16', function(data) {
call1 = data;
}),
jQuery.getJSON('https://api.composer.nprstations.org/v1/widget/51929bfde1c8886d5ccfb1d9/tracks?format=json&limit=11', function(data) {
call2 = data;
})
).then(function() {
if (call1.onNow.song) {
var output1="<ul>";
for (var i in call1.tracklist.results) {
var item1 = call1.tracklist.results[i];
if (item1.song.artistName && item1.song.trackName) {
output1 += "<li>" + item1.song.trackName + "</li>";
}
};
output1 += '</ul>';
document.getElementById("call1-playlist").innerHTML=output1;
};
if (call2.onNow.song) {
var output2="<ul id='playlist'>";
for (var i in call2.tracklist.results) {
var item2 = call2.tracklist.results[i];
if (item2.song.artistName && item2.song.trackName) {
output2 += "<li>" + item2.song.trackName + "</li>";
}
};
output2 += '</ul>';
document.getElementById("call2-playlist").innerHTML=output2;
};
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="call1-playlist">Placeholder</div>
<div id="call2-playlist">Placeholder</div>
当我调用getJSON时,它会从两个源中提取数据。但我不能让if (call1.onNow.song) ...
和if (call2.onNow.song) ...
同时工作。如果只有一个存在,它们就可以工作,但当它们都在代码中时就不行了。
我想这是我所缺少的相对简单的东西。再说一次,我是一个新手,所以我不确定在代码中的哪里可以找到解决方案。
API在第二次调用中似乎没有返回song
属性。然而,它似乎确实返回了可能合适的program
属性。我对美国国家公共广播电台API不是很熟悉,但两首歌不会同时播放是有道理的。
只需更改:
if (call2.onNow.song)
对此:
if (call2.onNow.program)
运行下面的代码片段,看看它是否适合您的需求。
$(function() {
var call1, call2;
jQuery.when(
jQuery.getJSON('https://api.composer.nprstations.org/v1/widget/517ed638e1c8d825471462ff/tracks?format=json&limit=16', function(data) {
call1 = data;
}),
jQuery.getJSON('https://api.composer.nprstations.org/v1/widget/51929bfde1c8886d5ccfb1d9/tracks?format=json&limit=11', function(data) {
call2 = data;
})
).then(function() {
if (call1.onNow.song) {
var output1="<ul>";
for (var i in call1.tracklist.results) {
var item1 = call1.tracklist.results[i];
if (item1.song.artistName && item1.song.trackName) {
output1 += "<li>" + item1.song.trackName + "</li>";
}
};
output1 += '</ul>';
document.getElementById("call1-playlist").innerHTML=output1;
};
if (call2.onNow.program) {
var output2="<ul id='playlist'>";
for (var i in call2.tracklist.results) {
var item2 = call2.tracklist.results[i];
if (item2.song.artistName && item2.song.trackName) {
output2 += "<li>" + item2.song.trackName + "</li>";
}
};
output2 += '</ul>';
document.getElementById("call2-playlist").innerHTML=output2;
};
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="call1-playlist">Placeholder</div>
<div id="call2-playlist">Placeholder</div>
实现上述目标的一种更简洁的方法:
jQuery.getJSON('https://api.composer.nprstations.org/v1/widget/517ed638e1c8d825471462ff/tracks?format=json&limit=16', function(data) {
callback(data, 'call1-playlist');
});
jQuery.getJSON('https://api.composer.nprstations.org/v1/widget/51929bfde1c8886d5ccfb1d9/tracks?format=json&limit=11', function(data) {
callback(data, 'call2-playlist');
});
function callback(data, id) {
if (data.onNow.song) {
var $ul = $('<ul/>');
$.each(data.tracklist.results, function () {
if (this.song.artistName && this.song.trackName) {
$ul.append($('<li>' + this.song.trackname + '</li>');
}
});
$('#' + id).html($ul);
}
}
相关文章:
- JQuery合并了keyup和focusout两个函数
- 如何使用 node.js 比较两个 json 数组
- 为复选框javascript指定两个值
- 用每小时的差值填充数组/列表-从下拉列表中给定两个时间值
- 单击时切换两个图像
- 我可以'我似乎不知道如何修复javascript中的两个lint.有人能帮我理解吗
- 基于两个条件退出While循环
- 如何在这里将两个值最低的数字相加
- 组合两个javascript函数
- 如何使用offer/answer交换来自两个对等连接的流
- jsf中两个字符串的颜色代码差异
- 加载两个具有相同父密钥名称的json文件
- 在Qualtrics中,介绍如何动态连接两个滑块
- 访问$.ajax()函数中的两个不同数组
- 如何在three.js上添加两个向量
- 如何在datetimepicker中使用两个验证器
- 如何在javascript中获取两个日期之间的周六和周日的日期
- 分别使用两个getJSON调用
- 如何将两个getjson响应合并为一个变量,然后处理该变量
- 如何避免为两个独立的数据源嵌套getJSON