FETCH API返回[object Object]

时间:2015-05-06 11:17:39

标签: javascript json html5 cors fetch-api

我正在使用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获取托管文本文件吗?我试过 - 无法让它发挥作用。 - 只是考虑另一种选择。

5 个答案:

答案 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)));
  };
};

https://davidwalsh.name/fetch

答案 3 :(得分:0)

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

  1. 清除项目中的缓存
  2. 删除并重新安装外部库/模块
  3. 重新启动项目

答案 4 :(得分:-1)

var myRequest = new Request('URL');
var title;
 fetch(myRequest).then(function(text) {
  return response.text().then(function(text) {
   title= text; 
        alert (title);

  });
});

这很有效。