Расшифруйте JSON в колбе - PullRequest
0 голосов
/ 27 ноября 2018

Я хочу отправить данные в формате JSON в моем приложении фляги, используя вызов AJAX, когда я отправляю его, я получаю «Нет» во фляге.

здесь - jquery,

$('#form').on('click',function(){
  var text = $('#textField').val();
  var obj = {name:text};
  var myJSON = JSON.stringify(obj);
  $.ajax({
    data : myJSON,
    url: '/process',
    type : 'post',
    contentType: 'application/json',
    dataType : 'json'
  })
})

здесьмой маршрут фляги,

@app.route('/process',methods=["POST"])
def process():
    data = request.json
    return render_template("form.html",data = data)

в данных, которые я получил "Нет".

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018
  • return render_template не является плодотворным, так как данные отправляются через Ajax.Он вернет содержимое шаблона.
  • Вы можете получить данные, возвращенные из Flask, методом done в Ajax.

Я добавляю пример кода, чтобы продемонстрировать, как работать с Ajaxотправка с данными JSON.

app.py:

from flask import Flask, render_template, request, jsonify

app = Flask(__name__)

@app.route('/process',methods=["GET", "POST"])
def process():
    if request.method == 'POST':
        data = request.json
        return jsonify(data)
    return render_template("form.html")

app.run(debug=True)

form.html:

<html>
    <head>
        <title>Form</title>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    </head>
    <body>
        <div id="data"></div>

        <input type="text" id="textField" />
        <button id="demo_btn">Dummy button</button>
        <script>
            $(document).ready(function () {
                $("#demo_btn").on("click", function() {
                    var text = $('#textField').val();
                    var obj = {name:text};
                    var myJSON = JSON.stringify(obj);
                    $.ajax({                        
                        url: '/process',
                        type : 'post',
                        contentType: 'application/json',
                        dataType : 'json',
                        data : myJSON
                    }).done(function(result) {
                        $("#data").html(result["name"]);
                    }).fail(function(jqXHR, textStatus, errorThrown) {
                        console.log("fail: ",textStatus, errorThrown);
                    });
                });
            });
        </script>       
    </body>
</html>

Вывод:

flask ajax json submission

Ссылка:

http://api.jquery.com/jquery.ajax/

0 голосов
/ 27 ноября 2018

Похоже, JQuery не устанавливает правильный заголовок.

Если вы используете метод request.get_json() вместо свойства request.json, он получит json независимо от заголовка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...