Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 访问循环json数据(Ajax)_Jquery_Ajax_Json - Fatal编程技术网

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){
。这就得到了它们