【发布时间】:2017-06-25 19:10:19
【问题描述】:
我正在使用 react native 文档 (https://facebook.github.io/react-native/docs/network.html) 中描述的 fetch 方法从服务器获取数据。
这是我获取数据的代码
let responseJson = await response.json();
if(response.status>=200&&response.status<300){
//this.setState({error:" "});
let alldata=responseJson;
console.log("All data "+alldata);
}else{
let error=responseJson;
throw error;
}
return responseJson;
我知道 responseJson 是一个 promise 对象,所以我尝试像这样解决它,但它不起作用。
let abc= this.fetchUserDate(accessToken);
abc.then(function(v) {
console.log(v.Bio+" "+v.Website+" "+typeof(v));
});
除了使用 v.Bio,我还尝试使用 v[0]、v[1] 等,但均无济于事。控制台打印未定义。但是,当我使用
let responseJson = await response.text();
我以纯文本形式获取数据,因此服务器端没有错误。如何获取 JSON 的各个组件?我的 JSON 包含如下基本配置文件信息:
{"bio":"I am a cool guy","website":"www.cool.com","gender":"M","avatar":"/media/images/avatar/blank.png"}
提前致谢!
【问题讨论】:
-
javascript 不是像 Visual Basic 这样的玩具语言,所以,它是 CaSe SeNSiTiVe - 你说你尝试过
v.Bio+" "+v.Website+...但你的数据有bio:和website: -
responseJson不是一个承诺对象。您使用了 await,所以它是一个普通的 javascript 对象。当您调用fetchUserDate(我假设这是您的第一个代码示例中的函数名称,请澄清这一点)时,它确实返回了一个承诺。您是否尝试仅记录您尝试访问的 json 的结果?我知道你从它的字段中得到未定义,但你能说出实际返回的内容吗? -
@JaromandaX 使用小写字符我在日志中得到相同的错误“未定义的未定义对象”
-
@MotiAzu fetchUserDate 是被调用的函数,我尝试记录 JSON 对象,但最终在控制台“[Object object]”中得到以下内容。当我尝试使用 .bio 或 .website 解决它时,我将其视为未定义。尽管 .text() 方法显示正在接收所有数据。也请看 Akis 的答案...
-
请用整个函数编辑您的问题,以便我们查看问题所在。
标签: javascript json react-native promise