2

ExpressJS 3 の実際の配列に角括弧 (つまり、'contact[21][name]') を含むフォーム フィールドを変換する既存のミドルウェアまたは便利なコードを見つけたいと思います。

次のようなもの:

for(key in req.body){
    if(key.isArrayField()) {
       //add new array field to req.body and delete old string version from req.body
...

ブラケットの無限の深さを解析したいと思います。私はまだJS/Nodeを学んでいるので、何らかの方向性が欲しい.

ありがとう

4

3 に答える 3

4

これで何を達成しようとしているのか、明確にすることはできますか?

最初に Web フォームから入力を取得する方法に応じて、 node.js に組み込まれているJSON.parse() ( docs here ) を使用して、JSON 構文を実際のオブジェクト (配列を含む) に簡単に解析できます。

その方法を使用すると、無限レベルのネストされた値 (ハッシュ/オブジェクト、および配列) を使用できますが、最初に値を配置するためのクライアント側スクリプトが必要になります (たとえば、jQuery )。

送信されるフォームのコンテキストを含め、より完全な例を挙げれば、おそらくより良い方向性を示すことができます...

于 2012-10-14T08:46:27.900 に答える
3

私の経験では、このようなことを簡単に行うことができます...

ジェイド

input(type="text" name="foo[]" value="foo1")
input(type="text" name="foo[]" value="foo2")

JS

app.post('/test', function(req,res){
    console.log(req.body)// { foo: [ 'foo1', 'foo2' ] }
    console.log(req.body.foo)//["foo1","foo2"]
    console.log(req.body.foo[0])//foo1
    console.log(req.body.foo[1])//foo2
});

これが理にかなっているかどうかはわかりませんが、これがあなたの扱い方です...少なくともexpress 3.0+では

于 2013-12-19T14:25:01.223 に答える
1

https://github.com/marioizquierdo/jquery.serializeJSONを使用してこれを解決しました-問題は、POSTフォームを送信して表現するだけでは、ブラケットを配列として処理しないため、手動で正規表現されます。プラグインを使用してフォームを JSON に解析することで、ajax 経由でフォームを送信できます。

于 2012-10-16T12:42:00.193 に答える