Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0
Posted
技术标签:
【中文标题】Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0【英文标题】: 【发布时间】:2017-12-15 08:27:45 【问题描述】:我尝试创建注册页面并将数据发送到 mysql db。我刚刚写了这个代码.. 服务器.js
var mysql = require('mysql');
var http = require('http');
var port = process.env.PORT || 1337;
var con = mysql.createConnection(
host: "localhost",
user: "*****",
password: "*******",
database: "node"
);
con.connect(function (error)
app.post('/', function (req, res)
var user = req.body;
var query = connection.query('INSERT INTO signup(FirstName, LastName, Email,Password, PasswordConfirm) SET ?', user, function (err, result)
);
res.end('Success');
);
);
app.js 这是我的组件。
class Signup extends React.Component
constructor()
super();
this.state = user: ;
this.onSubmit = this.handleSubmit.bind(this);
handleSubmit(e)
e.preventDefault();
var self = this;
fetch('/',
method: 'POST',
data:
firstname: self.refs.FirstName,
lastname: self.refs.LasttName,
email: self.refs.Email,
password: self.refs.Password,
passwordconfirm: self.refs.PasswordConfirm
)
.then(function(response)
return response.json()
).then(function(body)
console.log(body);
);
render()
return(
<div>
<form id="signup" onSubmit=this.onSubmit>
<input type="text" id="firstName" placeholder="FirstName" ref="firstname"/>
<input type="text" id="lastName" placeholder="LastName" ref="lastname"/>
<input type="email" id="email" placeholder="Email" ref="email"/>
<input type="password" id="password" placeholder="Password" ref="password" />
<input type="password" id="confirm" placeholder="PasswordConfirm"ref="passwordconfirm" />
<input type="submit" />
</form>
</div>
)
我只是尝试将数据发送到 mysql db。 我收到此错误消息 -->Uncaught (in promise) SyntaxError: Unexpected token
为什么?怎么了?
【问题讨论】:
您应该真正看到实际的 JSON,但我的猜测是服务器端出了点问题,服务器响应 html 错误页面(因此以<
开头)而不是 JSON。因此,您还需要检查服务器日志文件。
【参考方案1】:
您想要 Json 中的响应(使用 fetch):
console.log(response); // see the response before
return response.json();
但是你发送一个html(server.js):
res.end('Success');
尝试发送 json:
res.json(insert: "success")
【讨论】:
您的 server.js 中可能有错误?尝试使用console.log(response)
查看它【参考方案2】:
可能您的响应正文是 html,尝试在 jSON 中对其进行解析并尝试将标头添加为
fetch('/',
method: 'POST',
data:
firstname: self.refs.FirstName,
lastname: self.refs.LasttName,
email: self.refs.Email,
password: self.refs.Password,
passwordconfirm: self.refs.PasswordConfirm
,
headers:
'Content-Type': 'application/json',
'Accept': 'application/json'
)
.then(function(response)
console.log(response);
return response.json();
)
.then(function(body)
console.log(body);
);
【讨论】:
检查 Chrome 开发工具中的“网络”选项卡以查看服务器响应的内容 我收到了这些错误 -->Uncaught TypeError: (intermediate value)(intermediate value).then 不是 Object.ReactErrorUtils.invokeGuardedCallback ( app2.js:5516) 在 executeDispatch (app2.js:5040) 在 Object.executeDispatchesInOrder (app2.js:5063) 在 executeDispatchesAndRelease (app2.js:2963) 在 executeDispatchesAndReleaseTopLevel (app2.js:2974) 在 Array.forEach () 在 forEachAccumulated (app2.js:8634) 在 Object.processEventQueue (app2.js:3177) 在 runEventQueueInBatch (app2.js:16988) 尝试在函数句柄提交的末尾添加分号 提交后,它重新加载页面,我的数据库中没有任何内容 不,没有错误,但我没有看到我从页面发送的数据。它不在我的数据库表中【参考方案3】:好的,我只是因为忘记了 package.json 中的代理而遇到了这个问题。一定要检查一下。
【讨论】:
以上是关于Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0的主要内容,如果未能解决你的问题,请参考以下文章
解决Uncaught (in promise) reason的问题
Uncaught (in Promise) DOMException: play() 只能由用户手势启动
解决Uncaught (in promise) reason的问题
Uncaught (in promise):消息端口在收到响应之前关闭
vue控制台报 Uncaught (in promise) TypeError:
Uncaught (in promise) TypeError: Cannot set properties of null (setting 'innerText') in OpenWetherMa