[英]How to do equivalent of Flask Safe in ajax call
我似乎无法像在主HTML页面上的常规Javascript中那样在Ajax调用中复制等效功能。 我正在使用Python / Flask作为后端。 是否有使用{{变量| AJAX中的安全}}语法来获得类似结果?
我的sample.py类
class Sample:
def __init__(self):
self.product = 'something'
def transfer_to_js(self):
return json.dumps(self.__dict__)
我的烧瓶功能
@app.route('/get_data')
def get_data():
sample = Sample()
sample_str = sample.transfer_to_js()
return jsonify(result=sample_str)
HTML / js(达到预期效果)
<script>
console.log({{ result|safe }});
<!-- returns {product:"Something"} -->
</script>
我的AJAX通话(无法达到预期效果)
$.getJSON('/get_data', {},
function(data) {
console.log(data.result); // returns {"product":"Something"}
利用此结果的通话
function printObject(obj){
console.log(obj['product']); // prints "Something" for regular JS call, prints undefined for AJAX call
}
因此,我相信区别是细微的,即字典键中的引号与引号之间没有引号,但足以导致printObject函数失败。 有没有一种方法可以在python函数之外进行处理(因为我打算从常规js函数以及AJAX调用中都调用此函数)?
事实证明,在AJAX调用中,结果以字符串而不是JSON对象的形式传递回去,因此,为了进行转换,我编写了此代码
$.getJSON('/get_data', {},
function(data) {
console.log(JSON.parse(data.result));
}
我的结果与预期的一样
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.