TypeError Ajax Post - Flask Python [重复]

Posted

技术标签:

【中文标题】TypeError Ajax Post - Flask Python [重复]【英文标题】:TypeError Ajax Post - Flask Python [duplicate] 【发布时间】:2014-04-17 12:29:46 【问题描述】:

刚开始使用 Flask 和 Python。我有一个使用 jQuery ajax 表单库执行 ajax 发布的简单表单。它转到 python 端的函数并将用户添加到 mongoDb 数据库。然后它返回一个真或假。

返回布尔值后,我收到此错误:

TypeError: 'bool' 对象不可迭代

最近的回溯:

File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1836, in __call__

return self.wsgi_app(environ, start_response)

Python 端

@app.route('/signup', methods=['GET', 'POST'])
def signup():
    if request.method == 'GET':
        return render_template('signup.html')
    if request.method == 'POST':
        result = create_user(request.form["firstname"],
                    request.form["lastname"],
                    request.form["username"],
                    request.form["password"],
                    request.form["email"])
        return jsonify(result)

Javascript

<script type="application/javascript">
    $(document).ready(function() 
            // bind 'myForm' and provide a simple callback function
            $('#signupform').ajaxForm(function() 
                alert("Thank you for your comment!");
            );
        );
</script>

创建用户函数

def create_user(form_first_name, form_last_name, form_username, form_password, form_email):
    user = User()
    user.first_name = form_first_name
    user.last_name = form_last_name
    user.last_modified = datetime.now()
    user.username = form_username
    user.password = form_password
    user.email = form_email
    if user.save():
        return True
    else:
        return False

【问题讨论】:

create_user 是做什么的?你能显示那个函数的代码吗?我猜测 create_user 正在返回某种无法与 jsonify 一起使用的 True/False。您必须为 jsonify 提供一个字典,并且 create_user 应该返回一个字典。 【参考方案1】:

尝试返回:

return jsonify(result=result)

查看文档:http://flask.pocoo.org/docs/api/#flask.json.jsonify。

我怀疑create_user() 正在返回一个没有字典表示的布尔类型。

【讨论】:

好吧,这是有道理的。感谢您的帮助!

以上是关于TypeError Ajax Post - Flask Python [重复]的主要内容,如果未能解决你的问题,请参考以下文章

未捕获的TypeError:无法读取未定义的属性'ajax'

嵌套 JSON 响应 TypeError

TypeError:错误#2007:参数文本必须为非空

Uncaught TypeError: Illegal invocation报错简单直接解决方案

angular2 http.post 方法抛出 typeerror 异常

奇怪的错误:未捕获的TypeError:非法调用ajax