我正在尝试从我的获取函数将数据记录到控制台。我目前能够记录对烧瓶服务器的响应,但不能在反应端记录。我尝试将标头包含在获取函数中,但这似乎不起作用。因为我仍然收到错误:
未捕获(承诺中)语法错误:意外的标记 < in JSON at position 0
应用程序.py
from flask import Flask, request, jsonify
from flask_cors import CORS, cross_origin
app = Flask(__name__)
CORS(app)
@app.route('/api', methods=['GET','POST'])
def api():
if request.method == 'POST':
username = request.form['username']
email = request.form['email']
occupation = request.form['occupation']
print('Username: ' + username + ' Email: ' + email + ' occupation: ' + occupation)
print('Json ', (jsonify(username)))
return {"username": username}
else:
return {"username": username}
应用程序.js
import React, {useState, useEffect} from 'react';
import Form from './components/Form'
import './App.css';
function App() {
const [initialData, setInitialData] = useState ([{}])
useEffect(()=> {
fetch('/api',{
headers: {
method: 'GET',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
}).then(
response => response.json()
).then(data => console.log(data))
});
return (
<div className="App">
<Form/>
</div>
);
}
export default App;
问题是您的 fetch 产生了 500 错误。因此,响应类似于:
<!DOCTYPE HTML.....
原因是您正在发送
GET
请求,因此它未通过 if request.method == 'POST':
测试。因此,它尝试用 return {"username": username}
进行响应,但 username
未在条件的 else
分支中定义。
此外,您可能想使用:
return jsonify( {"username": username} )
确保您发送的是
application/json
mimetype 响应。