drno-reg
@drno-reg
см не кратко

Как правильно отправить json POST запросом?

Здравствуйте.

Наверное банальный вопрос, НО придется все равно его задать

нужно отправить JSON

{"id": "1", "context1": "xyz1231sdfsdf"}

который превратиться в UPDATE в БД PostgreSQL

var json_context = {"id": "1", "context1": "xyz1231sdfsdf"}
        var xhr = new XMLHttpRequest();   // new HttpRequest instance
        var url = 'http://localhost:5000/test_update'
        xhr.open("POST", url, true)
        xhr.setRequestHeader('Content-type', 'application/json; charset=utf-8');
        xhr.onreadystatechange = function() {
                if(xhr.readyState == 4 && xhr.status == 200) {
                    // alert(xhr.responseText);
                    console.log(xhr.responseText);
                }
        };
        xhr.send(JSON.stringify(json_context));
        console.log(xhr.responseText);


и ошибок нет и результата нет...

CURL дает результат

$ curl --header "Content-Type: application/json" --request POST --data '{"id":"1","context1":"xyz123ddfg"}' http://localhost:5000/test_update


что в JS не так и как решить эту проблему?

p.s.

backend на FLASK

@main_app.route('/test_update', methods=['GET', 'POST'])
def test_post():
    if request.method == "POST":
        print(request.is_json)
        content = request.get_json()
        print(content)
        print(content["id"])
        db.session.execute('update test set context1= :value1 where id= :value2',{'value1': content["context1"], 'value2': int(content["id"])})
        db.session.commit()
        return jsonify(content)
  • Вопрос задан
  • 67 просмотров
Пригласить эксперта
Ответы на вопрос 1
@abberati
frontend-разработчик
Воспользуйтесь современным удобным апи, не мучайте себя и браузер

https://learn.javascript.ru/fetch#post-zaprosy
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽
Intspirit Краснодар
от 80 000 до 150 000 ₽