我似乎无法像在主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调用中都调用此函数)?
答案 0 :(得分:0)
事实证明,在AJAX调用中,结果将作为字符串而不是JSON对象传递回去,因此,为了进行转换,我编写了此
MyViewModel
我的结果符合预期