7

jsonポスト配列として送信するオブジェクトを作成したいのですが、その場でキーを作成する必要があります

var id = $('#myInput').val();

var post = {
    'product[123]': 'myValue',     // this works fine - but isn't dynamic
    'product['+id+']': 'myValue'   // this does not work
}

文字列として送信すると問題なく動作しますが、より動的にしたい場合に問題が発生します。ここで本当に単純なことを見逃しているのでしょうか、それとも Javascript がすべきではないことをしようとしているのでしょうか?

4

3 に答える 3

18

(これは JSON とは何の関係もないことに注意してください。そこでは JSON を使用していません。オブジェクト初期化子を使用しています。JSONは、 JavaScript のオブジェクト初期化子構文のサブセットであるテキスト (コードではない) 形式です。)

[]記法を使用して、オブジェクト初期化子の外で実行します。

var id = $('#myInput').val();

var post = {};
post[product[id]] = 'myValue';

これは (実行時に) の値を取得し、それをproduct[id]プロパティのキーとして使用します。キーを文字通りproduct[123]when idisに123したい場合は、代わりにこれを使用します。

post['product[' + id + ']'] = 'myValue';

より一般的な議論:

var a = "foo";
var obj = {};
obj[a] = "bar";
console.log(obj.foo); // "bar"

JavaScript では、プロパティ キーを 2 つの方法で指定できます。ドット表記とリテラル ( obj.foo) を使用する方法と、括弧付き表記と文字列 ( obj["foo"]) を使用する方法です。後者の場合、文字列は文字列リテラルである必要はなく、任意の式の結果にすることができます。

于 2012-06-14T15:43:43.417 に答える
0

試す

post['product[' + id + ']'] = 'myValue';
于 2012-06-14T15:43:36.800 に答える
0

オブジェクトの ID に「[ ]」を使用するのはなぜですか? これは避けてください。
サンプルでは、​​次のコードでこれを行うことができます。

var id = $('#myInput').val();
var post = {
    '123': 'myValue',    
    id: 'myValue' 
}

または、本当に本当に配列を使用したい場合 (実際には、JavaScript ではすべてのオブジェクトが配列です)。これを書くことができます:

var product=[];
product['123']='something';
product[id]='another';
于 2012-06-14T15:50:14.270 に答える