Json错误:元素列表后缺少]

| 尝试将Json字符串的一部分传递给函数时,出现以下错误: 元素列表后缺少] Json字符串看起来像:-
var data = [
    {
        id: 1, name: \"254201075698\", series: [
            { 
                name: \"\", 
                reference: \"254201075698\",
                note: \"A test note\", 
                color: \"#f0f0f0\" 
            }
        ]
    }, 
    {
        id: 2, name: \"254201075699\", series: [
            { 
                name: \"\", 
                reference: \"254201075699\",
                note: \"A test note\", 
                color: \"#e0e0e0\" 
            }
        ]
    }
];
在for循环中,我尝试执行以下操作:-
item.append(jQuery(\"<div>\", {
                    \"class\": \"\",
                    \"css\": { \"\"}
                }).append(\'<a href=\"javascript:void(0);\" title=\"View details on \'+data[i].name+\'\" onClick=\"showInfoDialog(\'+data[i].series+\');return false;\">\'+data[i].name+\'</a>\'));
但是showInfoDialog参数似乎抛出了错误,我不确定为什么,有什么想法吗? showInfoDialog看起来像:-
function showInfoDialog(data) {    
    console.log(data);    
    clearMessages();
    var html =\'\';
    var id = data.id;           
    html += \'<p><label for=\"client\">Reference: </label> \'+data.reference+\'</p>\';
    $(\'#dialogContainer\').html(html);
    $(\'#loader\').hide();
    $(\'.dialogDiv\').dialog(\'option\', \'title\', data.reference);
    $(\".dialogDiv\").dialog(\'open\');
}
对于循环:
for (var i = 0; i < data.length; i++) {

}
已邀请:
您不能这样做...。
 onClick=\"showInfoDialog(\'+data[i].series+\')
它只会将其转换为
showInfoDialog([object Object])
-您需要对data [i] .series进行json化,或者更好的是,只需附加一个
click
事件。
jQuery(\'<a href=\"javascript:\" title=\"View details on \'+data[i].name+\'\">\')
    .html(data[i].name)
    .click(function() {
        showInfoDialog(data[i].series);
    })
    .wrap(\'<div></div>\')
    .appendTo(item);
`onClick=\"showInfoDialog(\'+data[i].series+\');return false;\">\'` ...
data [i] .series是一个数组,但是在showInfoDialog()函数中似乎并没有将它用作数组:
blah blah blah ... onClick=\"showInfoDialog(\'+data[i].series+\'); ... blah blah blah
这是您的错误所在。
data[i].series
是数组对象。它使用toString转换为文本,默认情况下会输出\“ [object object] \”或类似的东西。您需要先将该数组转换为JSON(例如JSON.stringify)。 或者,您可以执行以下操作:
blah blah blah ... onClick=\"showInfoDialog(data[\' + i + \'].series); ... blah blah blah
它将只寻找一个名为\“ data \”的全局变量(假设您的
var data
是可全局访问的)。例如,如果i = 42,则字符串将变为:
blah blah blah ... onClick=\"showInfoDialog(data[42].series); ... blah blah blah
您说您正在使用for-in循环,而我想让它遍历
data
数组。 永远不要使用for-in遍历数组,因为您很可能会返回Array基类的成员以及数组元素本身。看看这个JSFiddle 码:
for (var x in data){
    alert(data[x]); //shed-loads of alerts!
}

for (var x in data){
    //can use this
    if (data.hasOwnProperty(x)){
        alert(data[x]);
    }
}

//best just iterate with a standard for loop
for (var x=0; x<data.length; x++){
    alert(data[x]);
}
使用从0到data.length的
for
循环(如上所述)

要回复问题请先登录注册