Jquery 访问循环json数据(Ajax)
在下面的数据示例中,我试图循环并获取Jquery 访问循环json数据(Ajax),jquery,ajax,json,Jquery,Ajax,Json,在下面的数据示例中,我试图循环并获取参与者部分的所有数据 通过ajax调用,我可以访问其他数据,如下所示,但我无法找出该数据的for语句 var userData = $.ajax({ type: "POST", url: userurl, dataType: "json", //data: { point: point, claimId: id, type: val,follow: followuser } }) .success(functi
参与者
部分的所有数据
通过ajax调用,我可以访问其他数据,如下所示,但我无法找出该数据的for语句
var userData = $.ajax({
type: "POST",
url: userurl,
dataType: "json",
//data: { point: point, claimId: id, type: val,follow: followuser }
})
.success(function(json) {
$.each(json.data, function(i,x){
var id = x.Claim.user_id; // ETC
...
这很有效。使用此格式,我可以像这样访问单个数据:x.participants[8]。user\u id
。例如,我就是不知道如何循环参与者
来获取所有参与者的用户ID
{
"data": [
{
"Claim": {
"img_url": null,
"id": "4",
"user_id": "3",
"claim_status": "started",
"exp": "Sep 30, 2013"
},
"User": {
"score": "0",
"id": "3"
},
"ClaimResponse": [
{
"id": "32",
"claim_id": "4",
"user_id": "14",
"created": "2013-06-10 03:18:35",
"modified": "2013-06-10 03:18:35"
},
{
"id": "107",
"claim_id": "4",
"user_id": "8",
"created": "2013-06-28 02:37:10",
"modified": "2013-06-28 02:37:10"
},
{
"id": "140",
"claim_id": "4",
"user_id": "976",
"created": "2013-06-28 04:19:22",
"modified": "2013-06-28 04:19:22"
},
{
"id": "152",
"claim_id": "4",
"user_id": "19",
"created": "2013-07-03 02:27:12",
"modified": "2013-07-03 02:27:12"
},
{
"id": "154",
"claim_id": "4",
"user_id": "1158",
"created": "2013-07-05 03:16:48",
"modified": "2013-07-05 03:16:48"
}
],
"participants": {
"14": {
"user_id": "14",
"twitter_image_url": "https://si0.twimg.com/sticky/default_profile_images/default_profile_1_normal.png"
},
"8": {
"user_id": "8",
"twitter_image_url": "https://twimg0-a.akamaihd.net/sticky/default_profile_images/default_profile_3_normal.png"
},
"19": {
"user_id": "19",
"twitter_image_url": "https://si0.twimg.com/sticky/default_profile_images/default_profile_2_normal.png"
},
"1158": {
"user_id": "1158",
"twitter_image_url": "https://twimg0-a.akamaihd.net/sticky/default_profile_images/default_profile_5_normal.png"
}
},
"viewer": {
"isResponsed": false,
"isOwner": false,
"lockedInPoint": 0,
"response": null,
"cut_loss": false,
"cut_loss_price": null
}
},
{
"Claim": {
"img_url": null,
"id": "133",
"user_id": "14",
"claim_status": "started",
"exp": "Jul 15, 2013"
},
"User": {
"score": "-40",
"id": "14"
},
"ClaimResponse": [
{
"id": "172",
"claim_id": "133",
"user_id": "8",
"created": "2013-07-12 20:36:16",
"modified": "2013-07-12 20:36:16"
},
{
"id": "176",
"claim_id": "133",
"user_id": "1159",
"created": "2013-07-13 02:52:31",
"modified": "2013-07-13 02:52:31"
}
],
"participants": {
"8": {
"user_id": "8",
"twitter_image_url": "https://twimg0-a.akamaihd.net/sticky/default_profile_images/default_profile_5_normal.png"
},
"1159": {
"user_id": "1159",
"twitter_image_url": "https://twimg0-a.akamaihd.net/sticky/default_profile_images/default_profile_5_normal.png"
}
},
"viewer": {
"isResponsed": false,
"isOwner": false,
"lockedInPoint": 0,
"response": null,
"cut_loss": false,
"cut_loss_price": null
}
}
],
"errors": [],
"success": true,
"code": 200
}
编辑:一把小提琴,多亏了@ohgodwhy的帮助。也许这更能说明我想做什么。我想要与各自声明相关联的参与者图标。很接近,但似乎吸引了第一次索赔的所有参与者…:
数据
数组包含一个包含所有其他数据的对象,因此您应该循环使用json.data[0]
而不是json.data
由于直接包含数据的对象、包含对象的数组和包含对象的对象混合在一起,因此必须以不同的方式在项目中循环查找属性:
var ids = [];
$.each(json.data[0], function(i, x) {
if (x.hasOwnProperty('user_id') {
ids.push(x.user_id);
} else {
$.each(x, function(j, y) {
if (y.hasOwnProperty('user_id') {
ids.push(y.user_id);
}
});
}
});
必须在返回的JSON中选择数据对象的索引。然后,一旦有了它,就可以迭代参与者。这是因为数据
在返回时是一个数组
,因此我们需要选择对象所在数据的索引。如果您不提供它,您将得到未定义的
$.each(json.data[0].participants, function(i,p){
//access p with properties
console.log(p.twitter_image_url); //twitter image url
console.log(p.user_id); //user's id
});
如果您正在查找包含claimid和相关参与者ID的结果集
var result = $.map(response.data, function(item){
return { ClaimId : item.Claim.id, Participants: $.map(item.participants, function(item1){ return item1.user_id; }) };
});
console.log(result);
希望这有帮助。当然,问题是我的循环在哪里。我循环太快,调用了所有最初迭代的变量d次(d是嵌套循环中的项数)
以下是解决方案:
var d = {
"data": [{
"Claim": {
"img_url": null,
"id": "4",
"user_id": "3",
"claim_status": "started",
"exp": "Sep 30, 2013"
},
"User": {
"score": "0",
"id": "3"
},
"ClaimResponse": [{
"id": "32",
"claim_id": "4",
"user_id": "14",
"created": "2013-06-10 03:18:35",
"modified": "2013-06-10 03:18:35"
}, {
"id": "107",
"claim_id": "4",
"user_id": "8",
"created": "2013-06-28 02:37:10",
"modified": "2013-06-28 02:37:10"
}, {
"id": "140",
"claim_id": "4",
"user_id": "976",
"created": "2013-06-28 04:19:22",
"modified": "2013-06-28 04:19:22"
}, {
"id": "152",
"claim_id": "4",
"user_id": "19",
"created": "2013-07-03 02:27:12",
"modified": "2013-07-03 02:27:12"
}, {
"id": "154",
"claim_id": "4",
"user_id": "1158",
"created": "2013-07-05 03:16:48",
"modified": "2013-07-05 03:16:48"
}],
"participants": {
"14": {
"user_id": "14",
"twitter_image_url": "https://si0.twimg.com/sticky/default_profile_images/default_profile_1_normal.png"
},
"8": {
"user_id": "8",
"twitter_image_url": "https://twimg0-a.akamaihd.net/sticky/default_profile_images/default_profile_3_normal.png"
},
"19": {
"user_id": "19",
"twitter_image_url": "https://si0.twimg.com/sticky/default_profile_images/default_profile_2_normal.png"
},
"1158": {
"user_id": "1158",
"twitter_image_url": "https://twimg0-a.akamaihd.net/sticky/default_profile_images/default_profile_5_normal.png"
}
},
"viewer": {
"isResponsed": false,
"isOwner": false,
"lockedInPoint": 0,
"response": null,
"cut_loss": false,
"cut_loss_price": null
}
}, {
"Claim": {
"img_url": null,
"id": "133",
"user_id": "14",
"claim_status": "started",
"exp": "Jul 15, 2013"
},
"User": {
"score": "-40",
"id": "14"
},
"ClaimResponse": [{
"id": "172",
"claim_id": "133",
"user_id": "8",
"created": "2013-07-12 20:36:16",
"modified": "2013-07-12 20:36:16"
}, {
"id": "176",
"claim_id": "133",
"user_id": "1159",
"created": "2013-07-13 02:52:31",
"modified": "2013-07-13 02:52:31"
}],
"participants": {
"8": {
"user_id": "8",
"twitter_image_url": "https://twimg0-a.akamaihd.net/sticky/default_profile_images/default_profile_5_normal.png"
},
"1159": {
"user_id": "1159",
"twitter_image_url": "https://twimg0-a.akamaihd.net/sticky/default_profile_images/default_profile_5_normal.png"
}
},
"viewer": {
"isResponsed": false,
"isOwner": false,
"lockedInPoint": 0,
"response": null,
"cut_loss": false,
"cut_loss_price": null
}
}],
"errors": [],
"success": true,
"code": 200
}
$.each(d.data, function (i, x) {
id = x.Claim.id;
$('body').append('<div class="id"><p id="img'+x.Claim.id+'">Claim' + x.Claim.id + '</p></div>');
$.each(x.participants, function (i, p) {
$('#img'+x.Claim.id).append('<img src="' + p.twitter_image_url + '"/>');
});
});
var d={
“数据”:[{
“索赔”:{
“img_url”:空,
“id”:“4”,
“用户id”:“3”,
“索赔状态”:“已启动”,
“经验”:“2013年9月30日”
},
“用户”:{
“分数”:“0”,
“id”:“3”
},
“索赔回复”:[{
“id”:“32”,
“索赔id”:“4”,
“用户id”:“14”,
“已创建”:“2013-06-10 03:18:35”,
“修改”:“2013-06-10 03:18:35”
}, {
“id”:“107”,
“索赔id”:“4”,
“用户id”:“8”,
“已创建”:“2013-06-2802:37:10”,
“修改”:“2013-06-2802:37:10”
}, {
“id”:“140”,
“索赔id”:“4”,
“用户id”:“976”,
“已创建”:“2013-06-2804:19:22”,
“修改”:“2013-06-2804:19:22”
}, {
“id”:“152”,
“索赔id”:“4”,
“用户id”:“19”,
“已创建”:“2013-07-03 02:27:12”,
“修改”:“2013-07-03 02:27:12”
}, {
“id”:“154”,
“索赔id”:“4”,
“用户id”:“1158”,
“已创建”:“2013-07-05 03:16:48”,
“修改”:“2013-07-05 03:16:48”
}],
“与会者”:{
"14": {
“用户id”:“14”,
“twitter_图像_url”:https://si0.twimg.com/sticky/default_profile_images/default_profile_1_normal.png"
},
"8": {
“用户id”:“8”,
“twitter_图像_url”:https://twimg0-a.akamaihd.net/sticky/default_profile_images/default_profile_3_normal.png"
},
"19": {
“用户id”:“19”,
“twitter_图像_url”:https://si0.twimg.com/sticky/default_profile_images/default_profile_2_normal.png"
},
"1158": {
“用户id”:“1158”,
“twitter_图像_url”:https://twimg0-a.akamaihd.net/sticky/default_profile_images/default_profile_5_normal.png"
}
},
“观众”:{
“isResponsed”:错误,
“isOwner”:错误,
“锁定点”:0,
“响应”:空,
“削减损失”:错误,
“减损价”:空
}
}, {
“索赔”:{
“img_url”:空,
“id”:“133”,
“用户id”:“14”,
“索赔状态”:“已启动”,
“经验”:“2013年7月15日”
},
“用户”:{
“分数”:“-40”,
“id”:“14”
},
“索赔回复”:[{
“id”:“172”,
“索赔id”:“133”,
“用户id”:“8”,
“已创建”:“2013-07-12 20:36:16”,
“修改”:“2013-07-12 20:36:16”
}, {
“id”:“176”,
“索赔id”:“133”,
“用户id”:“1159”,
“已创建”:“2013-07-13 02:52:31”,
“修改”:“2013-07-13 02:52:31”
}],
“与会者”:{
"8": {
“用户id”:“8”,
“twitter_图像_url”:https://twimg0-a.akamaihd.net/sticky/default_profile_images/default_profile_5_normal.png"
},
"1159": {
“用户id”:“1159”,
“twitter_图像_url”:https://twimg0-a.akamaihd.net/sticky/default_profile_images/default_profile_5_normal.png"
}
},
“观众”:{
“isResponsed”:错误,
“isOwner”:错误,
“锁定点”:0,
“响应”:空,
“削减损失”:错误,
“减损价”:空
}
}],
“错误”:[],
“成功”:没错,
“代码”:200
}
$。每个(d.数据,函数(i,x){
id=x.Claim.id;
$('body').append('Claim'+x.Claim.id+'
');
每人$(x.参与者,功能(i,p){
$('#img'+x.Claim.id).append('');
});
});
感谢大家提供的各种方法。嗨-非常感谢@ohgodwhy。这让我非常接近。实际上,我的json中有多个Claim
对象,每个对象都与单个participant
对象关联。我试着用你的例子来得到所有的函数,有点像$。每个(x.participants,function(I,p){
。这就得到了它们