Javascript 语法错误意外标记'&燃气轮机';
我一直在不同的浏览器上测试我的JS代码,但在某些浏览器和手机上似乎都不起作用 JS 通过阅读这个问题,我了解到问题可能与“=>”有关,因为它是ES6元素,并非所有浏览器都支持它。但正如您在这里看到的,这似乎是获取这些json数据的方法: 有没有办法避免在该函数中使用“=>”使其在所有浏览器上都工作 下面是我在Safari 9上遇到的错误,例如: 我尝试了一些解决方案,但现在出现了以下错误:Javascript 语法错误意外标记'&燃气轮机';,javascript,ecmascript-6,safari9,Javascript,Ecmascript 6,Safari9,我一直在不同的浏览器上测试我的JS代码,但在某些浏览器和手机上似乎都不起作用 JS 通过阅读这个问题,我了解到问题可能与“=>”有关,因为它是ES6元素,并非所有浏览器都支持它。但正如您在这里看到的,这似乎是获取这些json数据的方法: 有没有办法避免在该函数中使用“=>”使其在所有浏览器上都工作 下面是我在Safari 9上遇到的错误,例如: 我尝试了一些解决方案,但现在出现了以下错误: 帖子还没有打印出来,有什么想法吗?更改以下行 然后(response=>response.json()
帖子还没有打印出来,有什么想法吗?更改以下行
然后(response=>response.json())
到
.then(函数(响应){response.json()})
及
。然后(json=>{
到
.then(函数(json){
完整代码:
function req1() {
fetch('https://jsonplaceholder.typicode.com/posts/1')
.then(function(response){ response.json()})
.then(function (json){
var title = json.title;
var body = json.body;
document.getElementById("newsTitle").innerHTML = title;
document.getElementById("newsContent").innerHTML = body;
document.getElementById("newsContent2").innerHTML = body;
});
}
req1();
使用普通函数而不是lambda:
"use strict";
function req1() {
fetch('https://jsonplaceholder.typicode.com/posts/1').then(function(response){
return response.json();
}).then(function(json){
var title = json.title;
var body = json.body;
document.getElementById("newsTitle").innerHTML = title;
document.getElementById("newsContent").innerHTML = body;
document.getElementById("newsContent2").innerHTML = body;
});
}
req1();
只要写
.then(function(json){
而不是
.then(response => response.json())
此外,如果您不确定脚本中的ES6语法,可以使用以下方法:
只需使用普通函数语法而不是ES6箭头语法:
function req1() {
fetch('https://jsonplaceholder.typicode.com/posts/1')
.then(function (res) {return res.json()})
.then(function (json) {
var title = json.title;
var body = json.body;
document.getElementById("newsTitle").innerHTML = title;
document.getElementById("newsContent").innerHTML = body;
document.getElementById("newsContent2").innerHTML = body;
});
}
req1();
大多数不支持ES6 arrow语法的浏览器不太可能支持Fetch API。对于那些浏览器,我建议使用另一种形式的HTTP请求,或者使用Polyfill,比如为什么不使用简单的请求
var xhReq = new XMLHttpRequest();
xhReq.open("GET", "https://jsonplaceholder.typicode.com/posts/1", false);
xhReq.send(null);
var serverResponse = xhReq.responseText;
var json = JSON.parse(serverResponse);
alert(json.title);
您需要使用fetch polyfill和旧函数语法,而不是es6的新arrow函数语法
功能需求1(){
取('https://jsonplaceholder.typicode.com/posts/1')
.then(函数(res){return res.json()})
.then(函数(json){
var title=json.title;
var body=json.body;
document.getElementById(“newsTitle”).innerHTML=title;
document.getElementById(“NewContent”).innerHTML=body;
});
}
req1();
是,使用普通的函数
语法。也就是说,如果有任何浏览器支持fetch()
但不支持ES6箭头函数。IDKYou不能使用“lambda”还没有Transpiler。例如,使用Babel,如果它不支持箭头函数,为什么错误实际上表明它来自匿名函数?你确定错误与此相关吗?Safari 9也不支持Fetch API,因此修复箭头函数只是一个开始。另一方面,Safari 9已经三年了,并且有0.03%mMarket share我个人并不担心。你使用的是哪种浏览器?知道为什么帖子还没有打印出来吗?我现在遇到了这个错误:ReferenceError:找不到变量:fetch。我正在用截图编辑我的问题,正如我在评论中所写的,不是所有的浏览器都支持fetch API。在这种情况下,你需要使用其他一些fHTTP请求的orm
var xhReq = new XMLHttpRequest();
xhReq.open("GET", "https://jsonplaceholder.typicode.com/posts/1", false);
xhReq.send(null);
var serverResponse = xhReq.responseText;
var json = JSON.parse(serverResponse);
alert(json.title);