繁体   English   中英

来自成功的Flask POST请求的JSON数据未传递到AJAX

[英]JSON data coming from a successful Flask POST request not getting passed to AJAX

以下是我的烧瓶视图:

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']
        while True:
            try:
                data = Viz_Connector(ID,Node_type).get_data()
                return  render_template('dropdown.html',data=jsonify(data))
                break
            except IndexError:
                return "Wrong ID"


    return render_template('dropdown.html')

以下是我的jquery / ajax。 我正在使用它,因为我的HTML下拉列表中有:

所有的jquery代码都保存在名为“ final.js”的文件中,并在下面的HTML中引用。

 $('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) {
      console.log(data);
    }
  });
  return false;
});

以下是输入ID和ID_type的HTML:

        <form action="{{url_for('select_ID')}}" method="POST">
      <label for="input_ID">ID</label>
      <input id="input_ID" type="text" />


      <label for="Node_Type">Node_Type</label>
      <select id="Node_Type">
     <option value=Customer>Customer</option>
    <option value=Phone>Phone</option>
    <option value=ID_Card>ID_Card</option>
  </select>


  <input type='submit' value='Submit'>
  <script src="{{url_for('static',filename='final.js')}}"></script>

</form>

下拉列表用于ID_Type,并具有3个可能的值

   "Customer","Phone" and "ID_Card".  

“ ID”是一个文本字段,具有值

 "C1","C2","C3","C4","C5","C6" for "Customer" 
 "ID1", "ID2" ,"ID3","ID4" for ID_Card 
  "P1" ,"P2" for phone. 

后端服务器是neo4j数据库服务器。

进入时

   "C1" as ID and ID_type as "Customer" 

生成以下数据:

运行烧瓶视图时,我得到了成功的POST:200。但是

  console.log(data) seems to display the entire HTML page and **NOT** the data from the server.

尝试使用Flask的jsonify()函数传递数据:

return jsonify(data=data)

文档: 带有jQuery的AJAX

编辑$ .ajax方法:

...
success: function(data) {
  console.log(data);
}
...

因此,问题在于我还返回了渲染模板('dropdown.html')。

修改了烧瓶代码,如下所示:

 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']
        while True:
            try:
                data = Viz_Connector(ID,Node_type).get_data()
                return  json.dumps(data)//no rendering of template

                break
            except IndexError:
                return "Wrong ID"


return render_template('dropdown.html')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM