2010-08-30 66 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(含)之間的元素。 從 字符串化中排除命名的屬性。陣列是 字符串化作爲開放左支架,由逗號分隔 元件,並且一個 閉右支架。

基本上任何命名屬性被排除的結果。