我希望有人可以帮助我,帖子中的数组值为空。
$(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'
});
}
工作示例 - &gt; http://www.jsfiddle.net/V9Euk/448/
提前致谢! 彼得
答案 0 :(得分:12)
尝试将values
作为对象,(就像它应该在javascript中用于命名键)。
var values = {};
此外,使用var
关键字声明变量是一个真的好主意,因此您不会创建全局变量。
此外,由于您已有String,因此无需'' + c0_selector + ''
。只需c0_selector
。
成品记录填充的对象。 http://www.jsfiddle.net/V9Euk/450/
答案 1 :(得分:9)
这直接来自ECMAScript规范。
抽象操作JA(值) 序列化一个数组。它可以访问 堆栈,缩进,间隙和空间 stringify的调用 方法。数组的表示 仅包括之间的元素 零和array.length - 包含1。 命名属性不包括在内 字串。一个数组是 字符串化为左开括号, 用逗号分隔的元素和a 关闭右括号。
基本上,任何命名属性都会从结果中排除。