我有一个flask应用程序,该应用程序从jsonify函数返回输出,但是在html上显示的输出不是很漂亮。现在,我将解析此输出并对其进行修改,然后再将其返回给html。我试图遍历json输出,但它不允许我这样做。我怎么做?
首先,这是我网页上jsonify函数的输出
预测:Apple Cedar rust,99.6459424495697,Bell_Pepper 健康,0.2868120325729251,蓝莓健康,0.05757397739216685
我想要这样的东西
预测:
苹果雪松锈:99.6459424495697
红辣椒健康:0.2868120325729251
蓝莓健康:0.05757397739216685
现在这是我的app.py文件中相同代码的代码
@app.route('/predict', methods=['GET', 'POST'])
def upload():
if request.method == 'POST':
# Get the file from post request
f = request.files['file']
# Save the file to ./uploads
basepath = os.path.dirname(__file__)
file_path = os.path.join(
basepath, 'uploads', secure_filename(f.filename))
f.save(file_path)
result = model_predict(file_path, model)
return jsonify(result)
return None
最后这是我的main.js文件的代码
$.ajax({
type: 'POST',
url: '/predict',
data: form_data,
contentType: false,
cache: false,
processData: false,
async: true,
success: function (data) {
// Get and display the result
$('.loader').hide();
$('#result').fadeIn(600);
$('#result').text(' Prediction: ' + data);
console.log('Success!');
},
});
答案 0 :(得分:1)
您可以返回一个HTML字符串,该字符串可用作forever
div的主体:
在您的#result
中,在app.py
中:
upload
在...
result = model_predict(file_path, model)
return flask.jsonify({'html':'\n'.join(f'<p>{a}: {b}</p>' for a, b in result)})
中:
main.js
JavaScript呈现值:
在$.ajax({
type: 'POST',
url: '/predict',
data: form_data,
contentType: false,
cache: false,
processData: false,
async: true,
success: function (data) {
// Get and display the result
$('.loader').hide();
$('#result').fadeIn(600);
$('#result').append(data.html); //add previously formatted html to div
console.log('Success!');
},
});
中:
app.py
在import json
result = model_predict(file_path, model)
return flask.jsonify({'payload':json.dumps([{'name':a, 'val':b} for a, b in result])})
中:
main.js
答案 1 :(得分:0)
假设result
是传递给jasonify(result)
的有效json对象,则需要遍历main.js
中的数据对象并以编程方式显示key:value
对。
像这样:
// data = { 'Apple Cedar rust': '99.6459424495697', ... }
$.each(data,function(key,value){
$('#results-list').append("<span>"+ key +": " + value + "</span>")
});