всем добрый день. с толкнулся с проблемой.
для теста написал на node пост обработку на запись в mysql:
var mysql = require('mysql');
var express = require('express');
var http = require('http');
var bodyParser = require('body-parser');
var app = express();
var connect = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '',
database: 'react'
});
connect.connect();
app.use(bodyParser.urlencoded({
extended: false
}));
app.use(bodyParser.json());
app.post('/server', function(req,res,next){
console.log(JSON.stringify(req.body));
connect.query('insert into users(name,login,password) values('+req.body.name+','+req.body.login+','+req.body.password+')', function(error, results, fields){
console.log(results);
res.send(JSON.stringify(results));
}
)
});
app.listen(3000)
connect.end();
на react написал компонент для отправки данный:
import React, {Component} from "react";
import logo from '../logo.svg';
export default class Auth extends Component {
constructor(props){
super(props)
this.state = {
name: '',
login: '',
password: '',
preloader: false
}
this.sendSession = this.sendSession.bind(this)
}
sendValue(e){
this.setState({[e.target.name]: e.target.value});
}
send_sql = (event) => {
this.setState({preloader:true});
event.preventDefault();
var data = {
name: this.state.name,
login: this.state.login,
password: this.state.password
}
fetch("http://localhost:3000/server", {
method: 'POST',
mode: 'no-cors',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify(data)
}).then(function(response){
if(response.status >= 400)
{
throw new Error('Bad response from server');
}
return response.json();
}).then(function(data){
console.log(data);
if(data == "success")
{
console.log('Request complete');
}
}).catch(function(err){
console.log(err);
});
}
sendSession = () => this.props.session(true);
render(){
return (
<div className="block">
{
!this.state.preloader ?
<form method="post">
<div id="result-auth-error"></div>
<div id="result-auth-success"></div>
<span>Name</span>
<input type="text" onChange={this.sendValue.bind(this)} name="name"/>
<span>Login</span>
<input type="text" onChange={this.sendValue.bind(this)} name="login"/>
<span>Password</span>
<input type="password" onChange={this.sendValue.bind(this)} name="password"/>
<button onClick ={this.send_sql}>Login</button>
<div className="clear"></div>
</form> :
<div className="preloader">
<img src={logo} width="50" alt="loading..."/>
</div>
}
</div>
)
}
}
во вкладке сеть в окне разработчика статус отправки "200", данные отправляются, но в node они не принимаются, тело req.body пустое.
а в консоле ошибка "SyntaxError: JSON.parse: unexpected end of data at line 1 column 1 of the JSON data". в чём может быть проблема?