Jquery - JSON.stringify,数组为空

时间:2010-08-30 17:24:20

标签: javascript jquery

我希望有人可以帮助我,帖子中的数组值为空。

$(function start() {

    c_all = new Array('#div { font-color:#ff0000; border:1px solid #00ff00; }', '#div_2 { font-color:#ff0000; }', '.line2 { font-color:#00ffff; }');

    css(c_all);

});


function css(x) {

    values = new Array();

    for (i = 0; i < x.length; i++) {
        c0_selector = '' + x[i].match(/^.*{/) + '';
        c0_selector = c0_selector.replace(/\s*/g, '');
        c0_selector = c0_selector.replace(/{/, '');

        x[i] = x[i].replace(/^.*{/, '');
        x[i] = x[i].replace(/}/, '');

        c0_arr = x[i].split(';');

        values['' + c0_selector + ''] = new Array();

        $('#log').append(''+c0_selector+'<br />');

        for (i2 = 0; i2 < c0_arr.length; i2++)
        {
            values[''+c0_selector+''][i2] = c0_arr[i2].split(':');
            $('#log').append(''+c0_arr[i2]+'<br />');  
        }

    }

    $.ajax({
            type: 'post',
            data: JSON.stringify(values),
            contentType: 'application/json',
            dataType: 'json'
    });


}

工作示例 - &gt; http://www.jsfiddle.net/V9Euk/448/

提前致谢! 彼得

2 个答案:

答案 0 :(得分:12)

尝试将values作为对象,(就像它应该在javascript中用于命名键)。

var values = {};

此外,使用var关键字声明变量是一个真的好主意,因此您不会创建全局变量。

此外,由于您已有String,因此无需'' + c0_selector + ''。只需c0_selector

成品记录填充的对象。 http://www.jsfiddle.net/V9Euk/450/

答案 1 :(得分:9)

这直接来自ECMAScript规范。

  

抽象操作JA(值)   序列化一个数组。它可以访问   堆栈,缩进,间隙和空间   stringify的调用   方法。数组的表示   仅包括之间的元素   零和array.length - 包含1。   命名属性不包括在内   字串。一个数组是   字符串化为左开括号,   用逗号分隔的元素和a   关闭右括号。

基本上,任何命名属性都会从结果中排除。