2010-08-30 3 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/

Заранее спасибо! Peter

ответ

12

Попробуйте сделать values объект, (как будто он должен быть в javascript для названных ключей).

var values = {}; 

Кроме того, это действительно хорошая идея, чтобы объявить переменные с var ключевого слова, так что вы не создавать глобальные переменные.

Кроме того, нет необходимости в '' + c0_selector + '', так как у вас уже есть строка. Просто сделайте c0_selector.

Готовый продукт регистрирует населенный объект. http://www.jsfiddle.net/V9Euk/450/

9

Это прямо из спецификации ECMAScript.

Реферат JA (значение) сериализует массив. Он имеет доступ к стеку, отступу, зазору и пробелу вызов строкового метода . Представление массивов содержит только элементы между ноль и array.length - 1 включительно. Именованные свойства исключаются из строчки . Массив равен , закрепленный в виде открытого левого кронштейна, элементов, разделенных запятой, и закрывающего правого кронштейна .

В принципе, любые именованные свойства исключаются из результата.