Javascript 如何使用jQuery在JSON数组中循环
我正在尝试循环一个JSON数组 下面是示例输出Javascript 如何使用jQuery在JSON数组中循环,javascript,jquery,arrays,json,Javascript,Jquery,Arrays,Json,我正在尝试循环一个JSON数组 下面是示例输出 { "calls": [ [ { "interactionId": "2002766591", "account_id": "", "mid": "", "Eic_CallDirection": "O", "Eic_RemoteAddress"
{
"calls": [
[
{
"interactionId": "2002766591",
"account_id": "",
"mid": "",
"Eic_CallDirection": "O",
"Eic_RemoteAddress": "5462223378",
"Eic_LocalAddress": "1062",
"Eic_State": "I"
}
]
],
"status": [
{
"statusId": "Available",
"userId": "su",
"loggedIn": false
}
]
}
这是我的jQuery代码
<script>
$(function(){
function isset(a, b){
if(typeof a !== "undefined" && a){
return a
}
return b;
}
setInterval(function() {
$.getJSON("showMEssages.php", {method: "getMessages"}, function(data){
if(data.calls.length == 0 || !data.calls){
console.log('No Messages');
}
var c;
$.each(data.calls, function(i, item){
c = item[i];
console.log(c);
var interactionId = isset(c.interactionId, 0);
var Eic_CallDirection = isset(c.Eic_CallDirection, '');
var Eic_State = isset(c.Eic_State, '');
var AccoRDI_mid = isset(c.AccoRDI_mid, '');
var Eic_RemoteAddress = isset(c.Eic_RemoteAddress, '');
if( Eic_CallDirection == 'I' && Eic_State == 'A'){
console.log('Call From ' + Eic_RemoteAddress + ' MID: ' + AccoRDI_mid );
}
if(Eic_CallDirection == 'O' && Eic_State == 'C'){
console.log('Live Call With ' + Eic_RemoteAddress );
}
});
});
}, 1000);
});
</script>
错误指向这条线
console.log(c);
此问题的原因是什么?我如何纠正它?在此函数中:
$.each(data.calls, function(i, item){});
项
是数据中每个元素的值。调用
,因此不需要使用项[i]
。只要c=item
就足够了。我解决了这个问题。我必须在一个循环中使用,因为我在数组中使用了数组
$.each(data.calls, function(i, item){
$.each(item, function(z, c){
var interactionId = isset(c.interactionId, 0);
var Eic_CallDirection = isset(c.Eic_CallDirection, '');
var Eic_State = isset(c.Eic_State, '');
var AccoRDI_mid = isset(c.AccoRDI_mid, '');
var Eic_RemoteAddress = isset(c.Eic_RemoteAddress, '');
if( Eic_CallDirection == 'I' && Eic_State == 'A'){
console.log('Call From ' + Eic_RemoteAddress + ' MID: ' + AccoRDI_mid );
}
if(Eic_CallDirection == 'O' && Eic_State == 'C'){
console.log('Live Call With ' + Eic_RemoteAddress );
}
});
});
在他的json中,calls是一个数组数组,获取第i个元素是有意义的
i
是data中item
的索引
$.each(data.calls, function(i, item){
$.each(item, function(z, c){
var interactionId = isset(c.interactionId, 0);
var Eic_CallDirection = isset(c.Eic_CallDirection, '');
var Eic_State = isset(c.Eic_State, '');
var AccoRDI_mid = isset(c.AccoRDI_mid, '');
var Eic_RemoteAddress = isset(c.Eic_RemoteAddress, '');
if( Eic_CallDirection == 'I' && Eic_State == 'A'){
console.log('Call From ' + Eic_RemoteAddress + ' MID: ' + AccoRDI_mid );
}
if(Eic_CallDirection == 'O' && Eic_State == 'C'){
console.log('Live Call With ' + Eic_RemoteAddress );
}
});
});