2

我正在使用 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 获取托管的文本文件吗?我试过 - 无法让它工作。- 只是想一个替代方案。

4

5 回答 5

3

您需要对对象进行字符串化以将其转换为 JSON 字符串。

尝试JSON.stringify(theObject)

于 2015-05-06T11:21:27.157 回答
2

尝试.then()按照此处所述使用:

fetch('URL/out.json', {mode: 'cors'}).then(function(response) {
    return response.blob();
}).then(function(response) {
    // process response
});
于 2015-05-06T11:21:59.363 回答
1

fetch API 是非常面向承诺的 fetch 返回一个带有响应对象作为参数的承诺,然后您需要在响应上调用一个方法来为您提供另一个带有结果的承诺

这是我做的一个例子。在第一个 .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)));
  };
};

https://davidwalsh.name/fetch

于 2016-10-17T01:07:27.290 回答
0

这工作正常

var myRequest = new Request('URL');
var title;
fetch(myRequest).then(function(response) {
    return response.text().then(function(text) {
        title= text; 
        alert (title);
    });
});
于 2015-05-06T14:58:27.253 回答
0

对于在遵循正确fetch语法时仍然遇到此问题的任何人,请尝试执行以下步骤(在拔掉头发之前 :)):

  1. 从您的项目中清除缓存
  2. 删除并重新安装外部库/模块
  3. 重启你的项目
于 2019-07-24T20:12:24.363 回答