所以我正在创建一个包含元素信息的数组。我遍历所有元素并保存索引。由于某种原因,我无法将此数组转换为json对象!
这是我的数组循环:
var display = Array();
$('.thread_child').each(function(index, value){
display[index]="none";
if($(this).is(":visible")){
display[index]="block";
}
});
我尝试通过以下方式将其变成JSON对象:
data = JSON.stringify(display);
它似乎没有发送正确的JSON格式!
如果我像这样手工编码,它将起作用并发送信息:
data = {"0":"none","1":"block","2":"none","3":"block","4":"block","5":"block","6":"block","7":"block","8":"block","9":"block","10":"block","11":"block","12":"block","13":"block","14":"block","15":"block","16":"block","17":"block","18":"block","19":"block"};
当我在JSON.stringify对象上发出警报时,它看起来与手工编码的对象相同。但这是行不通的。
我快要解决这个问题了!我在这里想念什么?发送此信息以获得手动编码格式的最佳方法是什么?
我正在使用此ajax方法发送数据:
$.ajax({
dataType: "json",
data:data,
url: "myfile.php",
cache: false,
method: 'GET',
success: function(rsp) {
alert(JSON.stringify(rsp));
var Content = rsp;
var Template = render('tsk_lst');
var HTML = Template({ Content : Content });
$( "#task_lists" ).html( HTML );
}
});
因为我正在显示信息(而不是更新或插入),所以使用GET方法。仅将显示信息发送到我的php文件。
最终解决方案
var display = {};
$('.thread_child').each(function(index, value){
display[index]="none";
if($(this).is(":visible")){
display[index]="block";
}
});
$.ajax({
dataType: "json",
data: display,
url: "myfile.php",
cache: false,
method: 'GET',
success: function(rsp) {
alert(JSON.stringify(rsp));
var Content = rsp;
var Template = render('tsk_lst');
var HTML = Template({ Content : Content });
$( "#task_lists" ).html( HTML );
}
});
我不确定,但我认为您可能会对数组如何在JSON中序列化感到惊讶。让我们隔离问题。考虑以下代码:
var display = Array();
display[0] = "none";
display[1] = "block";
display[2] = "none";
console.log( JSON.stringify(display) );
这将打印:
["none","block","none"]
这就是JSON实际上序列化数组的方式。但是,您想看到的是这样的:
{"0":"none","1":"block","2":"none"}
要获得此格式,您要序列化对象,而不是数组。因此,让我们像这样重写上面的代码:
var display2 = {};
display2["0"] = "none";
display2["1"] = "block";
display2["2"] = "none";
console.log( JSON.stringify(display2) );
这将以您想要的格式打印。
您可以在此处进行操作:http : //jsbin.com/oDuhINAG/1/edit?js,控制台
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句