'python get form data how can this be?

This is my js function for ajax form submit:

$('.sendButton').on('click', function(){
    $.post( "/send-form", $('#contactForm').serialize())
}

This is my form:

<form id="contactForm">
    <input id="fastName" name="name" type="text" />
    <input id="fastPhone" name="phone" type="text" />
    <div class="sendButton">send</div>
</form>

And this is my backend function to handle it, I am using python, flask

@app.route("/send-form", methods=['POST'])
def send_form():
    data = request.data   
    print request.data

And in my console it prints data:

127.0.0.1 - - [22/Feb/2015 23:50:54] "POST /send-form HTTP/1.1" 200 - name=dfdsf&phone=89920203725

But I did the same in another project and it prints nothing. Details are here: Can't get post ajax request data python How can this be possible?



Solution 1:[1]

The data is in the field request.form, and can be fetched by:

name = request.form['name']
phone = request.form['phone']

Remark. If they are not sent with, this code will throw an exception.

Longer explanation The reason is that the data is sent using a encoding known as application/x-www-form-urlencoded. The data is in request.data field, but to decode it you can use request.form, and Flask will automatically decode it as application/x-www-form-urlencoded.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1