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

HTTP POSTはフラットなキー/値コレクションのみを受け入れ、任意のJavaScriptデータ構造は受け入れないと思います。

平坦化できる場合(たとえば、John Staufferが示すように)、独自のドメインに投稿する場合は、を使用しXMLHttpRequestて、クエリ文字列のようにフォーマットされたキー/値コレクションを.sendで投稿して渡すことができます。 (データ)メソッド。

自分で実装したくない場合は、ほとんどのJavaScriptライブラリに実装が必要です(jQuery.postなど)。

于 2009-01-15T20:18:18.190 に答える
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=another

これは通常の形式であるため、サーバー上で解析するのはかなり簡単です。

于 2009-01-15T19:52:43.577 に答える