Как обработать запрос данных JSON в колбе - PullRequest
1 голос
/ 30 сентября 2019

Я хотел бы отправить данные в формате json со своей html-страницы по URL-адресу одним нажатием кнопки, но в настоящее время данные не обновляются по URL-адресу. Я включил здесь небольшое подмножество данных, которые я пытаюсь опубликовать. Метод GET отлично работает для публикации начального вывода в URL. Результатом запроса ajax является вывод предупрежденной ошибки. Как я могу использовать POST, чтобы успешно обновить вывод URL?

HTML:

<button type="submit" class="btn-sm btn-success btn-space" id ="commitButton" name="commitButton" value="enter">Commit</button>

Javascript:

<script>

    document.getElementById('commitButton').onclick = function() {
        $.ajax({
            url: "/processjson",
            type:'POST',
            headers: {
                'X-CSRF-TOKEN': '{{ csrf_token() }}'
            },
            "dataType": "json",
            "data": {"schema": {"fields":[{"name":"index","type":"integer"},{"name":"OB_TIME","type":"datetime"},{"name":"LATITUDE","type":"number"},{"name":"LONGITUDE","type":"number"}]}, "data": [{"index":0,"OB_TIME":"2015-09-03T00:00:00.000Z","LATITUDE":21.9,"LONGITUDE":-152.0}]},
            "contentType": "application/json",
             success: function(result) {
                            alert('ok');
                        },
             error: function(result) {
                            alert('error');
                        }
        })
    };

</script>

Колба:

@app.route('/processjson', methods=['GET','POST'])
@login_required
def processjson():
    if request.method == 'GET':
        return jsonify({'result':'Test'})

    # getting the table data when the commit button is pressed
    if request.method == 'POST':
        # gets jsonified data and convert it to a python data structure (dictionaries)
        data = request.get_json()
        fields = data['schema']['fields']
        tableData = data['schema']['data']
        return jsonify({'result':'Success!','tableData' : tableData})

Ответы [ 3 ]

0 голосов
/ 30 сентября 2019

request.get_json() анализирует данные формы как json, но это будет работать, если вы отправляете данные формы. Глядя на фрагмент JS, кажется, что вы не отправляете его как данные формы (вы делаете вызов ajax), поэтому ваши данные будут доступны в свойстве request.json

0 голосов
/ 01 октября 2019

вы можете использовать так: request.json

0 голосов
/ 30 сентября 2019

Поместите данные json в тело запроса. Вы можете получить доступ к телу запроса с помощью request.form.get('data'), чтобы получить строку json. Это может быть загружено в dict используя json.load(json_str).

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