Javascript JSON.parse位置0处的意外标记

Javascript JSON.parse位置0处的意外标记,javascript,json,Javascript,Json,我正在尝试学习JSON并观看我的视频。在编写代码的过程中,我在位置0处得到了JSON.parse意外标记s。我不太确定如何修复这个错误,也不确定它会带来什么后果 我查看了视频的问答部分,似乎很多人都遇到了相同的错误,但没有解决方案。我也检查了一些stackoverflow的答案,但是我对JSON的概念太陌生了,所以没有任何意义。任何帮助都将不胜感激 const express = require("express"); const bodyParser = require("body-pars

我正在尝试学习JSON并观看我的视频。在编写代码的过程中,我在位置0处得到了JSON.parse意外标记s。我不太确定如何修复这个错误,也不确定它会带来什么后果

我查看了视频的问答部分,似乎很多人都遇到了相同的错误,但没有解决方案。我也检查了一些stackoverflow的答案,但是我对JSON的概念太陌生了,所以没有任何意义。任何帮助都将不胜感激

const express = require("express");

const bodyParser = require("body-parser");

const request = require("request"); // use to do a request to an external 
server

const app = express();



app.use(bodyParser.urlencoded({extended: true}));



 app.get("/", function(req, res) {

 res.sendFile(__dirname + "/index.html");

 });



app.post("/", function(req, res) {



 var crypto = req.body.crypto;

 var fiat = req.body.fiat;



 var URL = "https://apiv2.bitcoinaverage.com/indices/global/ticker/";

 var finalURL = URL + crypto + fiat;

 request(finalURL, function(error, response, body) {



var data = JSON.parse(body)

var price = data.last;

var currentDate = data.display_timestamp;



res.write("The current date is " + currentDate);

res.write("<h1>The current price of" +  crypto + " is: " + price + fiat + 
"</h1>");

res.send();

});

});

app.listen(3000, function() {

console.log("Server started on port 3000.");



});
const express=require(“express”);
const bodyParser=require(“body parser”);
const request=require(“请求”);//用于向外部用户发出请求
服务器
常量app=express();
use(bodyParser.urlencoded({extended:true}));
应用程序获取(“/”,函数(请求,恢复){
res.sendFile(uu dirname+“/index.html”);
});
应用程序post(“/”,功能(请求,回复){
var crypto=req.body.crypto;
var fiat=所需阀体fiat;
变量URL=”https://apiv2.bitcoinaverage.com/indices/global/ticker/";
var finalURL=URL+crypto+fiat;
请求(最终、功能(错误、响应、正文){
var data=JSON.parse(正文)
var价格=data.last;
var currentDate=data.display\u时间戳;
res.write(“当前日期为”+当前日期);
res.write(“加密+”的当前价格为:“+价格+菲亚特+
"");
res.send();
});
});
app.listen(3000,函数(){
log(“服务器在端口3000上启动”);
});
HTML部分

<form action="/" method="post">
  <select name=" crypto">
    <option value="BTC">Bitcoin</option>
    <option value="ETH">Ethereum</option>
    <option value="LTC">Lightcoin</option>
    </select>

    <select name="fiat">
      <option value="USD">US Dollars</option>
      <option value="GBP">GB Pounds</option>
      <option value="EUR">EU Euros</option>
      </select>
      <button type="submit" name="button">Check</button>
</form>

比特币
以太坊
光币
美元
GB磅
欧盟欧元
检查

预期的输出应该是当您选择加密货币和货币(如美元、英镑、欧元)时,它会告诉您加密货币的价格。

当向此API发出错误URL的请求时,您会得到一个字符串,返回到JSON.parse并返回此错误。可能是API提供程序超时更改了此链接。请尝试在浏览器中访问此api路由,看看它是否有效


很可能你传递了错误的URL。

你从
正文
中得到了什么?
请求(finalURL,函数(错误,响应,正文){console.log(正文)
您可以在HTML中删除
加密之前的多余空间。如果是这样,您可以删除此问题。由于
中的空间,您将
未定义的ID
添加到url中,而不是例如
BTCUSD
。API以文本回复:
符号未定义的ID不受支持。等等,因为您正在尝试若要解析此标记,但它不是JSON,您将收到错误。请注意,大多数错误都可以通过查看启动应用程序的命令提示符轻松确定;node在抱怨意外标记之前拼写出API回复。并添加
res.setHeader(“Content Type”,“text/html;charset:utf-8”)
在发送回复代码之前先发送回复代码。这里最重要的一课是学会爱上
console.log()
它允许您随时检查所有变量,以确保它们包含您认为它们包含的内容。最后,JSON的概念是发送这样的文本:可以将其解析为对象。Firefox甚至会对其进行预解析,并将结果显示为树。