繁体   English   中英

如何在ajax调用中做相当于Flask Safe的操作

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM