2
_postData : function ()
{
    var fieldName = "day";

    var day = /*returns an object from the back end business service*/

    var value = day.getValue();

    if (value)
    {
        return {
            fieldName : value
        };
    }
}

問題は、fieldNameが実際には「日」であるにもかかわらず、JSONペイロードが返されて出力されると、文字通り次のように表示されることです。

{
   fieldName: "16"
}

したがって、何らかの理由で、実際の文字列値ではなく、変数の名前が出力されます。私が欲しいのは:

{
   day: "16"
}
4

2 に答える 2

4

これはJSONではなく、Javascriptオブジェクトリテラルです。また、Javascriptオブジェクトリテラルのプロパティの左側にシンボルを配置すると、その名前の変数が評価される可能性のある文字列ではなく、プロパティ名として使用されます。言い換えれば、{fieldName: 16}とまったく同じです{"fieldName": 16}

これを行う代わりに:

return {
     fieldName : value
};

あなたはこのようなことをすることができます:

var obj = {};
obj[fieldName] = value;
return obj;

2番目の例でfieldNameは、が文字列を含む変数の場合"foo"、結果のオブジェクトは次のようになります。{foo: 16}

于 2012-11-10T15:06:51.733 に答える
0

Kiyuraが言ったように、これはオブジェクトを定義する方法ではありません。現在のコードは基本的に、プロパティでfieldNameはなくプロパティを使用してオブジェクトを作成していdayます。代わりに、次のようなことを行う必要があります。

_postData : function ()
{
    var fieldName = "day";

    var day = /*returns an object from the back end business service*/

    var value = day.getValue();

    if (value)
    {
        var ret={};
        ret[fieldName]=value;
        return ret;
    }
}
于 2012-11-10T15:10:28.057 に答える