Jquery / ajax警报不能使用烧瓶视图

时间:2016-12-22 23:08:49

标签: jquery ajax flask

以下是我的观点:

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 工作和图形显示。

但是当找不到它们时,警报片不起作用,并且不会弹出警告。

无法确定是否遗漏了任何内容。

1 个答案:

答案 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