Jquery 提取 json 表示 {41: Array[2], 42: Array[1]}
Jquery excracting json representations {41: Array[2], 42: Array[1]}
我收到来自 Ajax 电话的以下回复
{41: Array[2], 42: Array[1]} 它基本上是一个从服务器发回的 python 字典,如下所示: {41: [0:15740, 1:15741], 42: [0:15744]}
因此,在 Jquery 中,我需要能够获取存储在此 json 表示中的键和匹配值,并能够在警报中显示它们。这是我到目前为止的代码,但它一直显示为 data.length: undefined 尽管它确实在之前的行中记录了数据。
$.ajax({
url: target,
dataType: 'json',
type: 'POST',
data: JSON.stringify(myData),
xhrFields: {
withCredentials: true
}
})
.done(function(data) {
console.log('done:', data);
console.log('data.Length : :', data.length);
for (var x = 0; x < data.length; x++) {
spreadsheet = data[x].Id;
spreadsheet += "<br>";
spreadsheet += data[x].Name;
spreadsheet += "<br>";
console.log('Spreadsheet : ' + spreadsheet)
}
})
这里的数据可能是一个对象。尝试使用 for--in 例如for(var x in data) 取代了 for 循环。它可能会解决您的问题。
for (var x in data) {
spreadsheet = data[x].Id;
spreadsheet += "<br>";
spreadsheet += data[x].Name;
spreadsheet += "<br>";
console.log('Spreadsheet : ' + spreadsheet)
}
你可以这样试试:
var obj = data;
jQuery.each(Object.keys(obj), function(i, x){
spreadsheet = data[x].Id;
spreadsheet += "<br>";
spreadsheet += data[x].Name;
spreadsheet += "<br>";
})
如果接收到的'data'值为字符串
,请转换为Json格式
var jsonData= JSON.parse(data) //if 'data' is string type.
请分享您收到的类型数据或部分样本数据。
如果响应是JSON,您首先需要解析它。
data=JSON.parse(data)
然后你需要像这样迭代对象
for(var key in data)
{// do stuff here
//you can access the array like this
data[key][0]
//or you can further iterate over the array
for(var x=0; x<data[key].length; x++)
{
//now you can access array element like
//this
data[key][x]
}
}
编辑:由于响应不是 json,因此您不需要该声明。
JSON.parse(data)
for(var key in obj)
{// do stuff here
var elem;
//or you can further iterate over the array
for(var x=0; x<obj[key].length; x++)
{
//now you can access array element like
//this
console.log(obj[key][x].slice(2));
elem=obj[key][x].slice(2);//now elem will contain the values 15740,15741
//,15744
}
我收到来自 Ajax 电话的以下回复
{41: Array[2], 42: Array[1]} 它基本上是一个从服务器发回的 python 字典,如下所示: {41: [0:15740, 1:15741], 42: [0:15744]}
因此,在 Jquery 中,我需要能够获取存储在此 json 表示中的键和匹配值,并能够在警报中显示它们。这是我到目前为止的代码,但它一直显示为 data.length: undefined 尽管它确实在之前的行中记录了数据。
$.ajax({
url: target,
dataType: 'json',
type: 'POST',
data: JSON.stringify(myData),
xhrFields: {
withCredentials: true
}
})
.done(function(data) {
console.log('done:', data);
console.log('data.Length : :', data.length);
for (var x = 0; x < data.length; x++) {
spreadsheet = data[x].Id;
spreadsheet += "<br>";
spreadsheet += data[x].Name;
spreadsheet += "<br>";
console.log('Spreadsheet : ' + spreadsheet)
}
})
这里的数据可能是一个对象。尝试使用 for--in 例如for(var x in data) 取代了 for 循环。它可能会解决您的问题。
for (var x in data) {
spreadsheet = data[x].Id;
spreadsheet += "<br>";
spreadsheet += data[x].Name;
spreadsheet += "<br>";
console.log('Spreadsheet : ' + spreadsheet)
}
你可以这样试试:
var obj = data;
jQuery.each(Object.keys(obj), function(i, x){
spreadsheet = data[x].Id;
spreadsheet += "<br>";
spreadsheet += data[x].Name;
spreadsheet += "<br>";
})
如果接收到的'data'值为字符串
,请转换为Json格式var jsonData= JSON.parse(data) //if 'data' is string type.
请分享您收到的类型数据或部分样本数据。
如果响应是JSON,您首先需要解析它。
data=JSON.parse(data)
然后你需要像这样迭代对象
for(var key in data)
{// do stuff here
//you can access the array like this
data[key][0]
//or you can further iterate over the array
for(var x=0; x<data[key].length; x++)
{
//now you can access array element like
//this
data[key][x]
}
}
编辑:由于响应不是 json,因此您不需要该声明。
JSON.parse(data)
for(var key in obj)
{// do stuff here
var elem;
//or you can further iterate over the array
for(var x=0; x<obj[key].length; x++)
{
//now you can access array element like
//this
console.log(obj[key][x].slice(2));
elem=obj[key][x].slice(2);//now elem will contain the values 15740,15741
//,15744
}