1

我在访问一个非常简单的对象的属性时遇到问题。作为一个新手程序员,我怀疑我对我正在使用的东西有一个简单的误解。

这是正在执行的代码:

    console.log(content);
    console.log(content.title);
    for (x in content){
        console.log(content[x])
    }

这是控制台响应:

{"title":"test","description":"test"}
undefined
{
"
t
i
t
l
e
"
:
"
t
e
s
t
"
,
"
d
e
s
c
r
i
p
t
i
o
n
"
:
"
t
e
s
t
"

}

任何指导将不胜感激。

编辑

内容对象正在通过 angular.js $http 服务发送到服务器,如下所示:

$http({
            method:'post',
            url:"/create/createContent",
            params:{content:$scope.content}
        }).

该服务似乎以 JSON 格式移动数据。

感谢大家的帮助!对此,我真的非常感激。

4

3 回答 3

5

这看起来content实际上是一个字符串,您只是在迭代字符串中的字符。试试这个,看看它是否能给你想要的东西:

var contentJson = JSON.parse(content);
for (var x in contentJson) {
    console.log(contentJson[x]);
}

这会将content字符串解析为适当的 JavaScript 对象,您应该能够访问其属性。

于 2013-08-15T19:41:06.633 回答
3

在我看来,问题在于您如何定义content. 你在做这个吗?

content = '{"title":"test","description":"test"}';

还是你在做这个?

content = {"title":"test","description":"test"};

注意:第一个用单引号包裹整个东西,而第二个没有。

于 2013-08-15T19:44:57.560 回答
2

您的对象内容采用 JSON 字符串形式。这样做,你会得到你想要的结果:

content = JSON.parse(content);
console.log(content);
console.log(content.title);
for (x in content){
    console.log(content[x])
}

您可以告诉您是 JSON 格式的方式是因为键值周围的引号。如果您采用对象格式,您将看不到引号。

请参阅下面的区别:

输出到控制台时的 JSON 字符串 {"key1":1,"key2":"two"}

输出到控制台时的对象 {key:1,key2:"two"}

于 2013-08-15T19:42:40.677 回答