0

我有这个 Javascript 数据:

[{id:123,type:"test"},{id:154,type:"another"}]

您如何将其转换为某种东西,以便我可以将其作为 HTTP 发布请求传递?

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;
}
4

4 回答 4

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

那是你要的吗?

于 2009-01-15T20:20:01.010 回答
0
"?qsparam=" + escape("[{id:123,type:'test'},{id:154,type:'another'},...]")
于 2009-01-15T19:40:53.507 回答
0

menu0.id=123&menu0.type=test&menu1.id=154&menu1.type=另一个

这在服务器上很容易解析,因为它是一种常规格式。

于 2009-01-15T19:52:43.577 回答
0

我相信 HTTP POST 只接受一个平面键/值集合,而不是任何任意的 JavaScript 数据结构。

如果您可以将其展平(例如,像 John Stauffer 的节目),并且如果您要发布到自己的域,则可以使用.sendXMLHttpRequest来发布和传递键/值集合,其格式类似于查询字符串(数据)方法。

如果您不想自己实现它,大多数 JavaScript 库都应该有一个实现(例如jQuery.post)。

于 2009-01-15T20:18:18.190 回答