JSON 编码、解析和调用混淆
JSON encode, parsing and calling confusion
所以我的服务器向客户端发送了一个json编码的数组。客户端在其上使用 JSON.parse,但是当我尝试提取数据时,我收到错误:TypeError: Cannot read property 'description' of undefined
,但我确定描述是关键之一,因为运行:
它与 reactjs 有关吗?我的代码:
<script type="text/jsx">
/** @jsx React.DOM */
var HabitModel = React.createClass({
getInitialState: function(){
return {
data: [],
pageAmount: 0
};
},
componentDidMount: function(){
this.serverRequest = $.get(this.props.source, {userid:123}, function(result){
result = JSON.parse(result);
this.setState({
data: result,
pageAmount: Math.ceil(result.length/4)
});
}.bind(this));
},
render: function() {
return (
<div>
the habit is:
<HabitList data={this.state.data} />
</div>
);
}
})
var HabitList = React.createClass(
{
render: function(){
return(
{ //error line here
JSON.stringify(this.props.data[0].description)
}
)
}
});
React.render(
<HabitModel source = "/health1/server/habit/user"/>,
document.getElementById('myDiv')
);
</script>
错误出在行JSON.stringify(this.props.data[0].description)
如果我放this.props.data[0]
,它会完美地工作,它将输出一个 JSON,如下所示:
{"habitid":"1","userid":"123","description":"go to the gym","startDate":"0000-00-00","goalDate":"0000-00-00"}
如您所见,关键之一是描述。那么this.props.data[0].description
为什么不起作用呢?
编辑:我发现如果我要做一个控制台.log就在 ajax 调用之后
componentDidMount: function(){
this.serverRequest = $.get(this.props.source, {userid:123}, function(result){
result = JSON.parse(result);
console.log(result[0].description); //ADDED LINE, this would work
this.setState({
data: result,
pageAmount: Math.ceil(result.length/4)
});
}.bind(this));
},
这将认识到描述是关键之一。reactjs 是怎么回事?
这里没有足够的代码来查看为什么description[0]
值undefined
并且没有description
属性。
创建HabitList
时是否设置了属性?
<HabitList description=[{description: "Aaa"}]/>
尝试像这样运行代码以查看发生了什么
var HabitList = React.createClass(
{
render: function () {
return (
<ul>
{JSON.stringify(this.props.description)}
</ul>
)
}
})
在 JS 中,您可以使用方括号访问解析的 JSON 字符串的 JSON 属性 []
。
所以例如:如果您已经在 var1
中解析了 json,并且想要从 json 中获取"属性"键,则应使用 var1["property"]
。当然,假设"属性"键是第一级的!
所以我想出了问题所在。当您意识到组件DidMount在初始渲染发生之前不会运行时,这一点变得很清楚。所以一开始它把一个空数据传递给孩子。这就是为什么尽管 JSON 中有一个描述键,但我无法从数据中获取描述
- HackReactor,编码窗口现在可以访问一个名为“”的对象;招生;使用名为“;showApp”;.调用此方法时不带任
- 在 jQuery 调用中编码 json
- 查找与通过两次调用地理编码创建的两个 latlng 对象的距离
- 我该怎么做[硬编码号码].[函数调用]在Javascript中工作
- 地理编码在第二次调用时返回(NaN、Nan)
- JSON 编码、解析和调用混淆
- 从函数调用控制器并向其传递 URL 编码参数
- 取消之前对谷歌地图地理编码方法的调用
- 调用以字符串编码的 javascript 函数
- 在用 PHP 编码时调用 javascript 函数
- 未调用地理编码回调
- 有没有一种方法可以在调用诺基亚反向地理编码api时将响应和查询关联起来
- 如何调用php json编码传递的ajax数组?zend框架2
- 代码中的硬编码Web API调用与多个环境相比
- 简单的ajax调用数据库来验证电子邮件PHP编码器
- 不能在函数调用中用变量值替换硬编码的属性名值
- 反向地理编码:将GPS坐标转换为位置名称的函数调用永远不会执行
- 我在使用编码器的soap调用期间得到控制台错误
- JSON编码与Services_JSON和json_encode在PHP返回空对象与jQuery ajax调用
- 如何在javascript或html文件中调用objective c编码的数组