2010-08-30 33 views
8

我希望有人能帮助我,数组中的值是空的。Jquery - JSON.stringify,数组是空的

$(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/

提前感谢! 彼得

回答

12

尝试使values对象,(就像它应该是在JavaScript命名键)。

var values = {}; 

而且,它是一个真正好主意与var关键字来声明变量,这样你就不会产生全局变量。

而且,不需要'' + c0_selector + ''既然你已经有了一个字符串。只要做c0_selector

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

9

这是直接从ECMAScript的规范。

抽象操作JA(值) 序列化一个数组。它可以访问 堆栈,缩进,间隙,及 空间的字符串化 方法的调用。数组 的表示仅包括 零和array.length - 1(含)之间的元素。 从 字符串化中排除命名的属性。阵列是 字符串化作为开放左支架,由逗号分隔 元件,并且一个 闭右支架。

基本上任何命名属性被排除的结果。