如何通过AJAX调用访问传递到Flask的数据?

时间:2018-12-02 22:11:51

标签: javascript python ajax flask

我正在一个项目,该项目使用flask和sql数据库显示酒店和airbnb数据。我们正在尝试创建“收藏夹按钮”,以便用户可以收藏/收藏列表。我有一个对Flask端点的AJAX调用,它将对“收藏夹”表进行相应的SQL查询。我的问题是,我似乎无法访问传递给Flask的数据。

这是我在客户端的AJAX呼叫:

function unfavoriteClicked(uid, itemid, type){
    $.ajax({
        type: "POST",
        url: "/unfavorite",
        data:{uid:uid, itemid:itemid, type:type},
        contentType: 'application/json;charset=UTF-8',
        success: function(data) {    
            console.log(data);
        },
        error: function(jqXHR) {
            alert("error: " + jqXHR.status);
        }
    });
}

这是我的Flask代码:

@app.route('/unfavorite', methods=["GET","POST"])
def unfavorite():
    if request.method == "POST":
      return request.form
return "this shouldn't happen"

请注意,由于我发现我没有在Flask中正确访问数据,因此我删除了SQL逻辑和其他内容。

我确定AJAX请求能够通过,因为当我返回类似“ hello”的内容时,它会显示在控制台日志中。但是,当我尝试访问传递的数据字典时,它会返回“ 500内部服务器错误”或其他类型的错误,具体取决于我要访问的内容。我试图通过查看其他stackoverflow帖子(例如request.form ['data'],request.data,request.args等)来访问许多不同的东西,但是似乎没有什么可以允许我访问数据。但是,它似乎确实允许我访问“ request.method”。

我想知道是否在这里缺少一些基本知识,这就是为什么我无法将数据传递给Flask的原因?或任何其他建议做此“收藏夹”按钮表示赞赏。谢谢!

1 个答案:

答案 0 :(得分:0)

因此,考虑要解决的主要问题是使用Ajax访问网页传递的数据。我有一个可能适合您的解决方案。

所以我将在两部分中说明如何解决此问题。

1)将数据传递到python控制器/函数以进一步处理数据。

SQL> @$ORACLE_HOME/sqlplus/admin/pupbld.sql

Session altered.

DROP SYNONYM PRODUCT_USER_PROFILE
             *
ERROR at line 1:
ORA-01434: private synonym to be dropped does not exist


BEGIN
*
ERROR at line 1:
ORA-01654: unable to extend index SYS.I_OBJ1 by 8 in tablespace SYSTEM
ORA-06512: at line 21
ORA-06512: at line 2


DROP VIEW PRODUCT_PRIVS
*
ERROR at line 1:
ORA-00942: table or view does not exist


  FROM SQLPLUS_PRODUCT_PROFILE
       *
ERROR at line 4:
ORA-00942: table or view does not exist


GRANT SELECT ON PRODUCT_PRIVS TO PUBLIC
                *
ERROR at line 1:
ORA-00942: table or view does not exist


DROP PUBLIC SYNONYM PRODUCT_PROFILE
                    *
ERROR at line 1:
ORA-01432: public synonym to be dropped does not exist


CREATE PUBLIC SYNONYM PRODUCT_PROFILE FOR SYSTEM.PRODUCT_PRIVS
*
ERROR at line 1:
ORA-01654: unable to extend index SYS.I_OBJ1 by 8 in tablespace SYSTEM


DROP SYNONYM PRODUCT_USER_PROFILE
             *
ERROR at line 1:
ORA-01434: private synonym to be dropped does not exist


CREATE SYNONYM PRODUCT_USER_PROFILE FOR SYSTEM.SQLPLUS_PRODUCT_PROFILE
*
ERROR at line 1:
ORA-01654: unable to extend index SYS.I_OBJ1 by 8 in tablespace SYSTEM


DROP PUBLIC SYNONYM PRODUCT_USER_PROFILE
                    *
ERROR at line 1:
ORA-01432: public synonym to be dropped does not exist


CREATE PUBLIC SYNONYM PRODUCT_USER_PROFILE FOR SYSTEM.PRODUCT_PRIVS
*
ERROR at line 1:
ORA-01654: unable to extend index SYS.I_OBJ1 by 8 in tablespace SYSTEM



Session altered.

2)访问python flask中从网页传递的数据

   $.post("url_to_which_you_want_to_pass_data", {variable_name_to_access_in_python:any_value/variable_from_front_end},
         function(response, status){
                       call_back_function_code  
         });

希望有帮助!干杯:)