YQL提取返回空对象

时间:2017-06-24 09:40:45

标签: javascript cors yql fetch-api

我正在尝试从不允许CORS的域中检索json,而我无法访问服务器以允许它。我在这里用 const url = 'https://www.googleapis.com/storage/v1/b/example-bucket/o/foo%2f%3fbar'; const yUrl = 'http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20json%20where%20url%3D%22' + encodeURIComponent(url) + '%22&format=json'; fetch(yUrl) .then(function(response){ alert(JSON.stringify(response, null, 4)); }) 替换了网址。

http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20json%20where%20url%3D%22https%3A%2F%2Fwww.googleapis.com%2Fstorage%2Fv1%2Fb%2Fexample-bucket%2Fo%2Ffoo%252f%253fbar%22&format=json

如果我们在浏览器中打开yUrl,它可以正常工作:{{1}}

然而,提醒(并因此返回)获取的响应是空的。

enter image description here

请指引我朝正确的方向前进。感谢。

P.S。我不想使用jQuery,更喜欢JavaScript。

1 个答案:

答案 0 :(得分:1)

fetch(…)调用返回包含响应对象的promise,要从中获取JSON,您需要使用.json()方法,该方法返回包含JSON的promise。

所以一起看看序列化的JSON数据,你需要做这样的事情:

fetch(yUrl)
    .then(response => response.json())
    .then(json => JSON.stringify(json))
    .then(function(json) {
        alert(json);
    })