我有这个Javascript数据:
[{id:123,type:"test"},{id:154,type:"another"}]
您如何将其转换为某些内容,以便将其作为HTTP post请求传递?
menu[0][id] = 123
menu[0][type] = test
menu[1][id] = 154
menu[1][type] = another
我不想传递实际的JSON数据,我想清理它并将其作为格式化的HTTP参数传递。
修改
能够使用类似的东西解析客户端上的对象,也许你们在我将其签名为“已回答”之前会建议更好的东西吗?
this.serialize = function(elem) {
var childs = elem.childElements();
var str = "";
for(var i=0, item; i<childs.length; i++) {
item = childs[i];
str += ((i)?"&":"")+"menu[" + i +"][id]=" + item.id.replace(/item_/,"");
str += "&menu[" + i +"][type]=" + item.className;
str += "&menu[" + i +"][section]=" + elem.id;
str += "&menu[" + i +"][position]=" + i;
}
return str;
}
答案 0 :(得分:3)
var data = [{id:123,type:"test"},{id:154,type:"another"}];
var params = new Array();
for(var x = 0; x < data.length; x++) {
params.push("id=[" + x + "]=" + escape(data[x].id));
params.push("type=[" + x + "]=" + escape(data[x].type));
}
alert(params.join("&")); // output: id=[0]=123&type=[0]=test&id=[1]=154&type=[1]=another
这就是你想要的吗?
答案 1 :(得分:0)
"?qsparam=" + escape("[{id:123,type:'test'},{id:154,type:'another'},...]")
答案 2 :(得分:0)
menu0.id = 123&安培; menu0.type =试验&安培; menu1.id = 154安培; menu1.type =另一
这很容易在服务器上解析,因为它是常规格式。
答案 3 :(得分:0)
我相信HTTP POST只接受一个扁平的键/值集合,而不是任何任意的JavaScript数据结构。
如果您可以展平它(例如,像John Stauffer所示),如果您要发布到自己的域名,则可以使用XMLHttpRequest
发布并通过键/值集合,格式类似于查询字符串,使用.send(data)方法。
如果您不想自己实现它,大多数JavaScript库都应该有一个实现(例如jQuery.post)。