我正在尝试从外部嵌套的json文件中获取数据。 这是我的ajax电话:
<script>
var json1 = (function () {
var json1 = null;
$.ajax({
'async': false,
'global': false,
'url': "PlayerActivity",
'dataType': "json",
'success': function (data) {
json1 = data;
}
});
return json1;
})();
var temp1 = [];
$.each(json1,function(i,val){
player = {};
player.id = val.id;
player.Events = val.Events;
temp1.push(player);
});
alert(temp1[1].Events);
$.each(temp1.Events, function(entryIndex, entry) {
alert(this.desc);
});
</script>
这是我的json格式:
var data1= {
"id": "7",
"Events": [
{
"id ": "1",
"desc": "kjbjhsdbjhbzsdj"
},
{
"id ": "2",
"desc": "kjbjhsdbjhbzsdj"
},
{
"id ": "3",
"desc": "kjbjhsdbjhbzsdj"
}
]
}
当我做temp [1]时。它显示正确,但是当我做temp [1]。事件时,它显示未定义。我知道我没有定义desc,但我尝试过很多方法:
player.Events.desc = val.desc
player.desc = val.desc
etc..etc。但没有任何效果
答案 0 :(得分:1)
答案 1 :(得分:0)
你做错了,因为AJAX调用是异步的,而你是未定义的,因为数据尚未加载。您可以提供对AJAX请求的回调,或者在成功时调用函数。试试这个:
var invokePlayerActivity = function () {
$.ajax({
'async': false,
'global': false,
'url': "PlayerActivity",
'dataType': "json",
'success': function (data) {
main(data);
}
});
};
function main (data) {
var temp1 = [];
$.each(data, function(i, val){
player = {};
player.id = val.id;
player.Events = val.Events;
temp1.push(player);
});
alert(temp1[1].Events);
$.each(temp1.Events, function(entryIndex, entry) {
alert(this.desc);
});
}
invokePlayerActivity();
答案 2 :(得分:0)
只需要使用此
alert(**player.Events[0].desc**)
而不是
alert(Events[0].desc)