【问题标题】:Problems making POST request on Javascript在 Javascript 上发出 POST 请求时出现问题
【发布时间】:2021-09-06 13:04:30
【问题描述】:

所以我正在开发一个使用Flask 开发并部署在Heroku 上的网络应用程序。我需要发出POST 请求并接收来自服务器的响应。我设法让它与Python 脚本一起工作,但我需要将代码“翻译”Javascript,以便我可以在我的网站上正确使用它。 Python 上的 Flask 应用程序:

app = Flask(__name__)
CORS(app, support_credentials=True)
@app.route('/')
def index():
    return "Index Page"
@app.route('/predict',methods=['GET','POST'])
def predict():
    data = request.form.get('data')
    if data == None:
        return 'Got None'
    else:
        # model.predict.predict returns a dictionary
        prediction = makePrediction(data)
    return json.dumps(str(prediction))
if __name__ == "__main__":
    app.run(host='0.0.0.0',debug=True) 

正在工作的Python 代码发出POST 请求:

def main():
    PARAMS = {'data':'sample text'}
    response = requests.post(url='https://textgenerator123.herokuapp.com/predict?', data=PARAMS)
    print(response.text)
if __name__ == "__main__":
    main()

我尝试使用Axios 使用以下代码通过Javascript 发出POST 请求:

axios.post('https://textgenerator123.herokuapp.com/predict?', {
  data: 'sample text'})
  
.then((response) => {
  console.log(response);
}, (error) => {
  console.log(error);
});

但控制台返回 “Got None”。所以网络应用程序接收到请求,但由于某种原因,数据为Null。我是Javascript 的新手,如果有人试图帮助我,我将不胜感激。谢谢!

【问题讨论】:

    标签: javascript flask heroku post axios


    【解决方案1】:

    网络呢?回应是什么?如果它在200,则该帖子应该已经通过。 “没有得到”可能是来自发布响应正文的响应。我认为你应该在你的开发工具中检查网络请求,看看响应是什么。

    【讨论】:

      【解决方案2】:

      如果您使用 data = request.get_json() 而不是 data.form 它应该可以工作,因为这会在您通过 axios 发送数据时解析传入的数据:{ data: 'sample text'}docs 解释了可用于请求的方法,在这种情况下,表单数据可能不是您想要使用的。

      app = Flask(__name__)
      CORS(app, support_credentials=True)
      @app.route('/')
      def index():
          return "Index Page"
      @app.route('/predict',methods=['GET','POST'])
      def predict():
            data = request.get_json()
          if data == None:
              return 'Got None'
          else:
              # model.predict.predict returns a dictionary
              prediction = makePrediction(data)
              print(prediction)
          return json.dumps(str(prediction))
      if __name__ == "__main__":
          app.run(host='0.0.0.0',debug=True) 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-04-15
        • 2017-06-08
        • 1970-01-01
        • 1970-01-01
        • 2021-06-07
        • 2021-07-30
        • 2022-01-25
        • 1970-01-01
        相关资源
        最近更新 更多