我想在前端通过Ajax 把一个json 对象(由字典生成),返回给后端。
经过测试,在后端通过request.args的数据结构是 ImmutableMuliDict:
文档上找到的资料是如下,所以我使用了copy()
后端的代码如下所示,我分别尝试了好多种方法但都不成功,返回结果分别如fixme1 fixme2 fixme3 fixme4 所示。
@app.route('/scan/pop_card', methods=['POST'])
def pop_card():
if request.method == 'PUT':
card = request.args
print 1, type(card)
print 2, card
# card_info = json.load(card.copy())
# fixme 1
'''
# File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 286, in load # return loads(fp.read(),
# AttributeError: 'MultiDict' object has no attribute 'read'
'''
card_json = card.copy().to_dict() #
# fixme 2 dict {}
# card_info = json.loads(str(card.copy()))
# fixme 3
'''
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 338, in loads
return _default_decoder.decode(s)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 366, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 384, in raw_decode
# raise ValueError("No JSON object could be decoded")
#ValueError: No JSON object could be decoded
'''
card_info = json.dumps(card.copy())
# fixme 4 str {}
return '<h1> 200 </h1>', 200
最后的问题是,我应该怎样在后端读取这个 json 对象?
原谅我是个笨蛋。
我是题主,现在已经找到答案了。
根据flask.request 的文档 http://dormousehole.readthedocs.org/en/latest/api.html#flask.request
直接使用 request.data 即可得到我的数值,连转换也不用了。