我正在搞乱一些看起来像这样的获取请求。
function translate(q) {
var sourceText = q;
var sourceLang = 'en';
var targetLang = 'es';
var url = "https://translate.googleapis.com/translate_a/single?client=gtx&sl=" + sourceLang + "&tl=" + targetLang + "&dt=t&q=" + encodeURI(sourceText);
var result = fetch(url);
return result;
}
问题是,在访问此URL时,结果是下载的.txt文件,包含JSON。使用Javascript,如何提取此文件的内容并使用JSON?
答案 0 :(得分:1)
你快到了。 fetch方法返回一个需要解析才能获取数据的promise。使用.then
,您可以从获取中获取响应,然后使用.json()
方法从服务器的响应中提取JSON。
function translate(q) {
var sourceText = q;
var sourceLang = 'en';
var targetLang = 'es';
var url = "https://translate.googleapis.com/translate_a/single?client=gtx&sl=" + sourceLang + "&tl=" + targetLang + "&dt=t&q=" + encodeURI(sourceText);
var result = fetch(url).then((resp) => {
return resp.json();
});
return result; // As Promise
}
document.getElementById("fetch").addEventListener("click", () => {
let promise = translate(document.getElementById("source").value);
promise.then((json) => {
document.getElementById("result").innerHTML = JSON.stringify(json);
});
});
<html>
<body>
<input type="text" id="source"></input>
<button id="fetch">fetch</button>
<div id="result"></div>
</body>
</html>