我在这里遇到了一个脚本,不确定如何在我设置的div中打印它。我想这与我如何处理响应有关。 chrome devtools的响应如下所示:
{
"[\"record one\", \"/description\"]": 0
}
我试图使用每个和map来迭代数据,但到目前为止还没有去任何地方。我是js和jquery的新手,所以剧本主要来自阅读和例子。
也许是某种嵌套循环?这是我的代码 -
$(function() {
return $('#myslider').slider({
range: true,
min: 0,
max: 20,
values: [1, 20],
stop: function(event, ui) {
var max, min;
min = ui.values[0];
max = ui.values[1];
$('#range').text(min + ' - ' + max);
$.ajax({
url: '/dir_scan',
type: 'get',
data: {
min: min,
max: max
},
dataType: 'json',
success: function(response) {
var albums;
albums = response;
$.each(albums, function(index, obj) {
var albumname, artist, li_tag;
li_tag = '';
albumname = obj.AlbumName;
artist = obj.Artist;
li_tag += '<li>Artist: ' + artist + ', Album: ' + albumname + '</li>';
$('#result').append($(li_tag));
return console.log;
});
}
});
}
});
});
正如威尔在评论中所说,JSON看起来很像。
但是,你正在使用.each的正确轨道,因为它看起来你正在返回一个对象数组。
这是一个做什么的例子:
var li_tag = '';
$.each(albums, function(index, obj) {
var albumname = obj.AlbumName;
var artist = obj.Artist
li_tag += '<li>Artist: ' + artist + ', Album: ' + albumname + '</li>';
$('#result').append($(li_tag));
return console.log;
});
此外,“专辑”应设置为成功功能的返回响应。你可能会试图从window.location中解密,从而产生一些头痛的问题。特别是因为json示例看起来格格不入。并且,对于从ajax调用返回的数据所做的任何工作都应该在success函数中进行。
以下是迭代如何适用于这种情况。代码中的评论 -
success: function(response) {
var albums;
// side issue - but I had to clear the div to get a complete refresh
$('#result').empty();
albums = response;
$.each(albums, function(key, value) {
var albumname, li_tag, path;
li_tag = '';
// I found I had to do this parseJSON call otherwise
// I had no correct key/value pair, even though I had set dataType
// to JSON
albumname = jQuery.parseJSON(key);
path = albumname[1];
li_tag += '<li ><a href=/album' + encodeURI(albumname[1]) + '>' + albumname[0] + '</a href></li>';
$('#result').append($(li_tag));
return console.log;
});
实际上,代码中的value
只是索引号,但我用逗号分隔了实际的键/值对,所以再次parseJSON似乎是唯一可行的方法。尽管尝试了split和substr这样的事情。希望我的回答很清楚,如果不能我编辑。