【发布时间】:2020-10-17 22:16:46
【问题描述】:
我从 codeside 学院的 YouTube 视频中获得了这段代码。对他很好,但我遇到了问题。控制台错误:
Access to XMLHttpRequest at 'http://127.0.0.1:8000/api/talk' from origin 'null' has been blocked
by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
POST http://127.0.0.1:8000/api/talk net::ERR_FAILED
服务器错误-
werkzeug.exceptions.BadRequestKeyError: 400 Bad Request: The browser (or proxy) sent a request
that this server could not understand.
KeyError: 'user_input'
我有这些文件
server.py
from flask import Flask, jsonify, request
from flask_cors import CORS
import trainer
app = Flask(__name__)
CORS(app)
@app.route('/')
@app.route('/api/talk',methods=['POST'])
def index():
user_input = request.form['user_input']
return jsonify({'msg':str(trainer.brain(user_input))})
if __name__ == '__main__':
app.run(host='127.0.0.1', port=8000, debug=True)
和,api.html
<html>
<head>
<link rel="stylesheet" href="">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
<script src=""></script>
<script src=""></script>
</head>
<body>
<div class="container">
<h1>Let's Talk</h1>
<div id="userinput" class="alert alert-success" role="alert"></div>
<div id="botresponse" class="alert alert-danger" role="alert"></div>
<input type = "text" name = "user_input" class="input-small"><br><br>
<button onclick="sendToServer()" class="btn btn-success" id="button">Send</button>
<span></span>
</div>
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script>
function sendToServer(){
console.log("clicked")
$.ajax({
data :{
user_input: $("#user_input").val()
},
type: "POST",
url: "http://127.0.0.1:8000/api/talk" ,
contentType: "application/json" ,
headers: "Access-Control-Allow-Origin: " ,
}).done(function(data){
console.log(data)
let user = $("#user_input").val()
document.getElementById("userinput").innerText=user,
document.getElementById("botresponse").innerText=data.msg
})
}
</script>
</body>
</html>
在我将 .json 更改为 .form 以集成 API 之前,server.py 可以与 Postman 一起正常工作。
【问题讨论】:
-
请阅读Under what circumstances may I add “urgent” or other similar phrases to my question, in order to obtain faster answers? - 总结是这不是解决志愿者的理想方式,并且可能会适得其反。请不要将此添加到您的问题中。
-
-
@CAM_344 这不起作用。请提出其他建议。
-
您的主要问题是
$("#user_input").val()意味着您从具有id="user_input"但您的<input>只有name="user_input"的元素中获得价值
标签: javascript python jquery flask postman