Javascript 语法错误意外标记'&燃气轮机';

Javascript 语法错误意外标记'&燃气轮机';,javascript,ecmascript-6,safari9,Javascript,Ecmascript 6,Safari9,我一直在不同的浏览器上测试我的JS代码,但在某些浏览器和手机上似乎都不起作用 JS 通过阅读这个问题,我了解到问题可能与“=>”有关,因为它是ES6元素,并非所有浏览器都支持它。但正如您在这里看到的,这似乎是获取这些json数据的方法: 有没有办法避免在该函数中使用“=>”使其在所有浏览器上都工作 下面是我在Safari 9上遇到的错误,例如: 我尝试了一些解决方案,但现在出现了以下错误: 帖子还没有打印出来,有什么想法吗?更改以下行 然后(response=>response.json()

我一直在不同的浏览器上测试我的JS代码,但在某些浏览器和手机上似乎都不起作用

JS

通过阅读这个问题,我了解到问题可能与“=>”有关,因为它是ES6元素,并非所有浏览器都支持它。但正如您在这里看到的,这似乎是获取这些json数据的方法:

有没有办法避免在该函数中使用“=>”使其在所有浏览器上都工作

下面是我在Safari 9上遇到的错误,例如:

我尝试了一些解决方案,但现在出现了以下错误:


帖子还没有打印出来,有什么想法吗?

更改以下行

然后(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);