我正在使用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获取托管文本文件吗?我试过 - 无法让它发挥作用。 - 只是考虑另一种选择。
答案 0 :(得分:2)
您需要对对象进行字符串化以将其转换为JSON字符串。
尝试JSON.stringify(theObject)
答案 1 :(得分:1)
尝试使用here所述的.then()
:
fetch('URL/out.json', {mode: 'cors'}).then(function(response) {
return response.blob();
}).then(function(response) {
// process response
});
答案 2 :(得分:0)
fetch API非常以承诺为导向 fetch返回一个带有响应对象作为参数的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)));
};
};
答案 3 :(得分:0)
对于仍然遵循正确的fetch
语法仍然遇到此问题的任何人,请尝试执行以下后续步骤(在拔出头发之前:)):
答案 4 :(得分:-1)
var myRequest = new Request('URL');
var title;
fetch(myRequest).then(function(text) {
return response.text().then(function(text) {
title= text;
alert (title);
});
});
这很有效。