当前位置: 首页 > 知识库问答 >
问题:

通过POST从React到Flask获取数据[复制]

霍弘厚
2023-03-14

我是反应和烧瓶API系统的新手。我创建了一个网站,允许用户通过搜索栏进行搜索。我希望能够通过POST请求将查询从React搜索栏发送到FlaskAPI。但是,我得到一个空字符串或ImmutableDict

反应码

function handlePostQuery(query){

    if (query != "") {
        axios.post('http://localhost:5000/api/query', query)
            .then(function(response){
                console.log(response);
       //Perform action based on response
        })
        .catch(function(error){
            console.log(error);
       //Perform action based on error
        });
    } else {
        alert("The search query cannot be empty")
    }
}

烧瓶代码

@app.route('/api/query', methods = ['POST'])
def get_query_from_react():
    data = request.form
    print(data)
    return data

回答如下:获取烧瓶请求中收到的数据

我尝试了所有这些方法,但是我总是(在烧瓶中)得到一个空字符串,除非我使用request.form返回给我类似的东西:

ImmutableMultiDict([(“我在搜索栏中键入的内容”,”)

然而,在webconsole中,我得到:

config: {url: "http://localhost:5000/api/query", method: "post", data: "what I type in the search", headers: {…}, transformRequest: Array(1), …}
    data: {what I type in the search: ""}
    headers: {content-length: "38", content-type: "application/json"}
    request: XMLHttpRequest {readyState: 4, timeout: 0, withCredentials: false, upload: XMLHttpRequestUpload, onreadystatechange: ƒ, …}
    status: 200
    statusText: "OK"
    __proto__: Object

我假设axios已经从React返回了一个JSON。因此,我认为这不是一个问题。

共有1个答案

公西飞鸾
2023-03-14

您可以尝试以下操作:

反应

function handlePostQuery(query){

    var myParams = {
        data: query
    }

    if (query != "") {
        axios.post('http://localhost:5000/api/query', myParams)
            .then(function(response){
                console.log(response);
       //Perform action based on response
        })
        .catch(function(error){
            console.log(error);
       //Perform action based on error
        });
    } else {
        alert("The search query cannot be empty")
    }
}

瓶子

@app.route('/api/query', methods = ['POST'])
def get_query_from_react():
    data = request.get_json()
    print(data)
    return data

我认为问题是Axios没有正确阅读JSON。这就是为什么我创建了myParams字典并传递给Axios。

 类似资料:
  • 我想通过“id”从我的mongodb获取数据。如果我的id与mongodb中id的值匹配,则它将获取该对象,但其抛出错误为: {“message”:“对于模型“PostMessage”“”的路径“\u id”处的值“s-CoAhDKd”,转换为ObjectId失败}

  • 问题内容: 我需要知道我的用户是否已连接。为此,我想读取在服务器端通过express-session设置的cookie: 我尝试使用react-cookie,但是它不起作用,但是我复制/粘贴了npm react-cookie doc: 这很奇怪,因为可以呈现正确的结果,但是我不知道如何处理: 问题答案: 您可以使用软件包,也可以使用命令进行安装。 文档:https : //github.com/j

  • 问题内容: 我发布了一系列复选框。而且我无法使其正常工作。我没有在foreach循环中包含适当的语法来保持简单。但它正在工作。我通过尝试使用文本字段而不是复选框执行相同的操作进行了测试,并且它与文本字段一起使用。 这是不起作用的部分。它回显“邀请”而不是数组。 问题答案: 您的$ _POST数组包含邀请数组,因此将其读取为 因为它是一个数组,所以将不起作用。您必须遍历数组以获取所有值。

  • main.java Controller/Controller.java 模型/ConnectDB.java 查看/fxmlSample.fxml 错误: 错误:(64,9)Java:类Sample.Controller.Controller中的method initData无法应用于给定类型;必需:javafx.event.actionevent找到:没有参数原因:实际和正式参数列表的长度不同

  • 问题内容: 我正在尝试使用fetch发布 JSON对象。 据我了解,我需要将一个字符串化的对象附加到请求的主体,例如: 当使用jsfiddle的json回显时,我希望看到返回的对象(),但这不会发生-chrome devtools甚至不会在请求中显示JSON,这意味着它没有被发送。 问题答案: 借助ES2017 支持,这是如何实现JSON负载的方法: 但是,问题是由 很久以来修复的chrome b

  • 问题内容: 我将在Django中从AJAX请求中获取参数,这是我正在做的事情: base.html: main.js: views.py: 是的,我知道目前我的JS无法从文本形式获取真实数据,它仅发送静态文本“ MY TEXT”。但是当我按下按钮时,出现 “ MultiValueDictKeyError at /在“”中找不到“键’name’” 我做错了什么? 我更改了代码:main.js bas