Jquery - JSON.stringify,数组为空

9
我希望有人能够帮助我,因为在提交中,数组值为空。
$(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'
    });


}

工作示例 -> http://www.jsfiddle.net/V9Euk/448/

提前感谢! Peter

2个回答

12

尝试将values设置为一个对象(在JavaScript中应该使用命名键值对的方式)。

var values = {};

另外,使用 var 关键字声明变量是一个非常好的做法,这样你就不会创建全局变量。

此外,没有必要使用 '' + c0_selector + '',因为你已经有一个字符串了。只需要使用 c0_selector 即可。

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


9
这里是直接引用自ECMAScript规范的内容。
抽象操作JA(value) 序列化一个数组。它可以访问到stringify方法调用时的堆栈,缩进、间隔和空格。数组的表示仅包括从零到array.length-1(含)之间的元素。命名属性被排除在字符串化之外。数组将作为一个开放的左括号、由逗号分隔的元素和一个闭合的右括号来字符串化。
基本上,任何命名属性都被排除在结果之外。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接