_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"
}
答案 0 :(得分:4)
这不是JSON,它是Javascript对象文字。当您在Javascript对象文字中的属性的左侧放置一个符号时,该符号用作属性名称,而不是该名称的变量可能评估为的任何字符串。换句话说,{fieldName: 16}
完全等同于{"fieldName": 16}
而不是这样做:
return {
fieldName : value
};
你可以这样做:
var obj = {};
obj[fieldName] = value;
return obj;
在第二个中,如果fieldName
是包含字符串"foo"
的变量,则生成的对象将显示为{foo: 16}
答案 1 :(得分: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;
}
}