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

时间:2018-11-29 16:00:43

标签: javascript python json ajax flask

我似乎无法像在主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调用中都调用此函数)?

1 个答案:

答案 0 :(得分:0)

事实证明,在AJAX调用中,结果将作为字符串而不是JSON对象传递回去,因此,为了进行转换,我编写了此

MyViewModel

我的结果符合预期