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 实际上是“day”,当 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;

在第二个中,如果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 回答