2010-08-30 29 views
8

espero que alguien me pueda ayudar, el valor de la matriz está vacío en la publicación.Jquery - JSON.stringify, array está vacío

$(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' 
    }); 


} 

ejemplo de trabajo ->http://www.jsfiddle.net/V9Euk/448/

Gracias de antemano! Peter

Respuesta

12

Intente hacer values un Objeto, (como debería estar en javascript para claves con nombre).

var values = {}; 

Además, es una buena idea realmente para declarar las variables con la palabra clave var, por lo que no está creando las variables globales.

Además, no es necesario '' + c0_selector + '' porque ya tiene una Cadena. Solo haz c0_selector.

El producto terminado registra el objeto poblado. http://www.jsfiddle.net/V9Euk/450/

9

Esto es directamente de la especificación de ECMAScript.

La operación abstracta JA (valor) serializa una matriz. Tiene acceso a la pila, sangría, hueco y espacio de la invocación del método stringify . La representación de las matrices incluye solo los elementos entre cero y array.length - 1 inclusive. Las propiedades con nombre están excluidas de la cadena . Una matriz es encerrada como un corchete izquierdo abierto, elementos separados por comas y un corchete de cierre .

Básicamente, las propiedades con nombre se excluyen del resultado.