После моего ввода мои данные принимаются как null

#javascript #python #html #flask

#javascript #python #HTML #flask

Вопрос:

я создаю форму для простого исследования, но она работает некорректно, моя форма отправляет значения, но моя внутренняя колба показывает значение null, я протестировал серверную часть с insomnia, все в порядке, помогите, пожалуйста

Мой HTML, JS

  <form name="myForm" method="POST">
            <p><label for="first_name">First Name:</label>
                <input type="text" name="first_name" id="fname"></p>

            <p><label for="last_name">Last Name:</label>
                <input type="text" name="last_name" id="lname"></p>

            <input value="Submit" type="submit" onclick="create_send_Json()">
 </form>

        <script>
            function create_send_Json() {

                // get name
                var fname = document.forms["myForm"]["fname"].value;
                var lname = document.forms["myForm"]["lname"].value;

                // make JSON
                data = { "fname": fname, "lname": lname };
                var jsonData = JSON.stringify(data);

                // Send data
                var xhr = new XMLHttpRequest();
                var url = 'http://localhost:5000/contact';

                xhr.open("POST", url);
                xhr.setRequestHeader("Content-Type", "application/json");
                console.log(jsonData);
                xhr.send(jsonData);


                return false;
            }
   </script>
  

Моя колба

 @app.route('/contact', methods=['POST','GET'])
def login():
    if request.method == 'POST':
        data = request.json
        print (data)
        return jsonify(data)


    else:
        return render_template('contact.html')
  

Комментарии:

1. итак, вы подтвердили, что данные POST в браузере не отправляют null? могу ли я предложить onclick="return create_send_Json()" запретить отправку формы, поскольку вы выполняете XHR при отправке — возможно, это как-то связано с запросом

2. независимо от того… put onclick="return create_send_Json()" — т. е. добавьте туда возврат