以下是我的观点:
import db_connect_test
from db_connect_test import Viz_Connector
from flask import Flask, request, session, redirect, url_for, render_template, flash,json,jsonify
import os
app = Flask(__name__)
@app.route('/',methods = ['GET','POST'])
def select_ID():
if request.method == 'POST':
ID=request.form['input_ID']
Node_type = request.form['Node_Type']
data = Viz_Connector(ID,Node_type).get_data()
if data == 'Wrong ID and Node_type':
return data
else:
return json.dumps(data)
return render_template('dropdown.html')
当后端应用程序数据库中不存在数据时,方法为:
Viz_Connector(ID,Node_type).get_data()
返回'错误的ID和Node_type'
以下是我的ajax /查询:
$('input[type=submit]').click(function() {
var input_ID = $("#input_ID").val();
var Node_Type = $("#Node_Type").val();
$.ajax({
type: "POST",
url: "/",
dataType: 'json',
data: {
input_ID: input_ID,
Node_Type: Node_Type,
},
success: function(data) {
if (data == 'Wrong ID and Node_type') {
alert(data);
} else {
var IDData = JSON.stringify(data); //--data getting passed from flask view when ID and node_type exist
console.log(IDData);
---code to render graph---
}
});
return false;
)}
当数据库中存在 ID 和 Node_type 时,一切正常,其他部分 Flask视图和 Ajax / jquery 工作和图形显示。
但是当找不到它们时,警报片不起作用,并且不会弹出警告。
无法确定是否遗漏了任何内容。
答案 0 :(得分:1)
$.ajax()
期待JSON响应(因为dataType: 'json'
选项)。尝试return jsonify(data)
,您可以消除整个if data == 'Wrong ID and Node_type':
条件,因为它实际上没有做任何事情:
@app.route('/',methods = ['GET','POST'])
def select_ID():
if request.method == 'POST':
ID=request.form['input_ID']
Node_type = request.form['Node_Type']
data = Viz_Connector(ID,Node_type).get_data()
return jsonify(data)
return render_template('dropdown.html')
jsonify
是一个Response对象,因此它具有内容类型标题等,而json.dumps
只返回一个有效的JSON字符串。 see this SO question for more info