为什么我的数据无法登录到控制台reactjs和flask

问题描述 投票:0回答:1

我正在尝试从我的获取函数将数据记录到控制台。我目前能够记录对烧瓶服务器的响应,但不能在反应端记录。我尝试将标头包含在获取函数中,但这似乎不起作用。因为我仍然收到错误:

未捕获(承诺中)语法错误:意外的标记 < 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;
python reactjs flask fetch-api
1个回答
0
投票

问题是您的 fetch 产生了 500 错误。因此,响应类似于:

<!DOCTYPE HTML.....

原因是您正在发送

GET
请求,因此它未通过
if request.method == 'POST':
测试。因此,它尝试用
return {"username": username}
进行响应,但
username
未在条件的
else
分支中定义。

此外,您可能想使用:

return jsonify( {"username": username} )

确保您发送的是

application/json
mimetype 响应。

© www.soinside.com 2019 - 2024. All rights reserved.