FETCH API 返回 [object 对象]
FETCH API returning [object Object]
我正在使用 FETCH API 获取存储在 json 文件中的值。该值必须进入变量。
问题是 - 变量最终持有 [object Object] 作为值。
var title = fetch('URL/out.json', {mode: 'cors'});
在托管 json 文件的服务器的 htaccess 中,有一行
Header set Access-Control-Allow-Origin "*"
json如下
{
lollol
}
我认为 json 可能是罪魁祸首。
我找不到[object Object]成为变量值的原因。
我可以使用 Fetch 获取托管文本文件吗?我试过了 - 无法让它工作。 - 正在考虑替代方案。
您需要将对象字符串化以将其转换为 JSON 字符串。
尝试JSON.stringify(theObject)
尝试使用 .then()
描述 here:
fetch('URL/out.json', {mode: 'cors'}).then(function(response) {
return response.blob();
}).then(function(response) {
// process response
});
这个很好用
var myRequest = new Request('URL');
var title;
fetch(myRequest).then(function(response) {
return response.text().then(function(text) {
title= text;
alert (title);
});
});
fetch API 非常注重承诺
获取 returns 一个以响应对象作为参数的承诺
然后你需要在响应上调用一个方法来给你另一个 promise 和结果
这是我做的一个例子。在第一个 .then() 中,我在响应中调用了 .json,这样我可以在下一个 .then()
中得到我的结果
export function newVideoAsync(videoData, url) {
return (dispatch) => {
return fetch(url, {
method: 'POST',
headers: {
'content-type': 'application/json'
},
body: JSON.stringify(videoData)
})
.then(response => response.json())
.then(jsonData => {
dispatch(videoSuccess(jsonData))
console.log(jsonData);
// find video id to redirect to that video
// client side redirect to '/video/:id'
browserHistory.push('/')
})
.catch(err => dispatch(videoError(err.message)));
};
};
对于在遵循正确的 fetch
语法时仍然遇到此问题的任何人,请尝试执行以下后续步骤(在拔头发之前:)):
- 从您的项目中清除缓存
- 删除并重新安装外部 libs/modules
- 重新启动您的项目
我正在使用 FETCH API 获取存储在 json 文件中的值。该值必须进入变量。
问题是 - 变量最终持有 [object Object] 作为值。
var title = fetch('URL/out.json', {mode: 'cors'});
在托管 json 文件的服务器的 htaccess 中,有一行
Header set Access-Control-Allow-Origin "*"
json如下
{
lollol
}
我认为 json 可能是罪魁祸首。
我找不到[object Object]成为变量值的原因。
我可以使用 Fetch 获取托管文本文件吗?我试过了 - 无法让它工作。 - 正在考虑替代方案。
您需要将对象字符串化以将其转换为 JSON 字符串。
尝试JSON.stringify(theObject)
尝试使用 .then()
描述 here:
fetch('URL/out.json', {mode: 'cors'}).then(function(response) {
return response.blob();
}).then(function(response) {
// process response
});
这个很好用
var myRequest = new Request('URL');
var title;
fetch(myRequest).then(function(response) {
return response.text().then(function(text) {
title= text;
alert (title);
});
});
fetch API 非常注重承诺 获取 returns 一个以响应对象作为参数的承诺 然后你需要在响应上调用一个方法来给你另一个 promise 和结果
这是我做的一个例子。在第一个 .then() 中,我在响应中调用了 .json,这样我可以在下一个 .then()
中得到我的结果export function newVideoAsync(videoData, url) {
return (dispatch) => {
return fetch(url, {
method: 'POST',
headers: {
'content-type': 'application/json'
},
body: JSON.stringify(videoData)
})
.then(response => response.json())
.then(jsonData => {
dispatch(videoSuccess(jsonData))
console.log(jsonData);
// find video id to redirect to that video
// client side redirect to '/video/:id'
browserHistory.push('/')
})
.catch(err => dispatch(videoError(err.message)));
};
};
对于在遵循正确的 fetch
语法时仍然遇到此问题的任何人,请尝试执行以下后续步骤(在拔头发之前:)):
- 从您的项目中清除缓存
- 删除并重新安装外部 libs/modules
- 重新启动您的项目