To get data in Flask from an AJAX POST request using jQuery, you need to follow these steps:
First, set up a basic Flask server. Create a Python file, e.g., app.py.
from flask import Flask, request, jsonify app = Flask(__name__) @app.route('/submit', methods=['POST']) def submit(): # Get JSON data from the request data = request.get_json() print(data) # Print the data to the console for debugging # Process the data (example: extract a field) name = data.get('name') # Create a response response = { 'message': f'Received data for {name}' } # Return the response as JSON return jsonify(response) if __name__ == '__main__': app.run(debug=True) Create an HTML file, e.g., index.html, with a form and a button to send the AJAX request.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Flask AJAX Example</title> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> </head> <body> <form id="dataForm"> <label for="name">Name:</label> <input type="text" id="name" name="name"> <button type="button" id="submitBtn">Submit</button> </form> <div id="response"></div> <script> $(document).ready(function() { $('#submitBtn').click(function() { var name = $('#name').val(); $.ajax({ type: 'POST', url: '/submit', contentType: 'application/json', data: JSON.stringify({ name: name }), success: function(response) { $('#response').html('<p>' + response.message + '</p>'); }, error: function(error) { console.log('Error:', error); } }); }); }); </script> </body> </html> Run the Flask server by executing the Python file.
python app.py
Flask Route:
/submit is defined to handle POST requests.request.get_json() is used to get JSON data from the request.name field).jsonify().HTML and jQuery:
/submit URL.JSON.stringify().#response div.contentType: 'application/json' in the AJAX request to specify that the data is in JSON format.request.get_json() in Flask to parse the JSON data from the request.Sending Data via AJAX POST to Flask
$.ajax({ type: "POST", url: "/some-url", data: JSON.stringify({ key: 'value' }), contentType: 'application/json;charset=UTF-8', success: function(response) { console.log('Data sent successfully'); }, error: function(error) { console.error('Error sending data:', error); } }); /some-url using AJAX POST.Receiving Data in Flask from AJAX POST
from flask import Flask, request, jsonify app = Flask(__name__) @app.route('/some-url', methods=['POST']) def receive_data(): data = request.get_json() key_value = data.get('key') # Accessing posted data # Process data or return a response return jsonify({'message': 'Data received successfully'}) if __name__ == '__main__': app.run(debug=True) /some-url handles POST requests, retrieves JSON data, processes it, and returns a JSON response.Sending Form Data via AJAX POST to Flask
$.ajax({ type: "POST", url: "/submit-form", data: $('#form-id').serialize(), success: function(response) { console.log('Form data sent successfully'); }, error: function(error) { console.error('Error sending form data:', error); } }); serialize() method to Flask endpoint /submit-form using AJAX POST.Receiving Form Data in Flask from AJAX POST
from flask import Flask, request, jsonify app = Flask(__name__) @app.route('/submit-form', methods=['POST']) def submit_form(): form_data = request.form field_value = form_data.get('field_name') # Accessing form field # Process form data or return a response return jsonify({'message': 'Form data received successfully'}) if __name__ == '__main__': app.run(debug=True) /submit-form handles POST requests, retrieves form data, processes it, and returns a JSON response.Sending GET Request to Flask from AJAX
$.ajax({ type: "GET", url: "/get-data", success: function(response) { console.log('GET request successful:', response); }, error: function(error) { console.error('Error sending GET request:', error); } }); /get-data and logs the response.Receiving GET Request in Flask
from flask import Flask, jsonify app = Flask(__name__) @app.route('/get-data', methods=['GET']) def get_data(): # Fetch data or process logic data = {'key': 'value'} return jsonify(data) if __name__ == '__main__': app.run(debug=True) /get-data handles GET requests and returns JSON data.Handling AJAX Cross-Origin Requests in Flask
from flask import Flask, jsonify from flask_cors import CORS app = Flask(__name__) CORS(app) # Enables CORS for the entire application @app.route('/api/data', methods=['GET']) def get_data(): data = {'key': 'value'} return jsonify(data) if __name__ == '__main__': app.run(debug=True) /api/data.Handling AJAX Errors in Flask
from flask import Flask, jsonify, request from werkzeug.exceptions import BadRequest app = Flask(__name__) @app.errorhandler(BadRequest) def handle_bad_request(e): return jsonify({'error': str(e)}), 400 @app.route('/submit-data', methods=['POST']) def submit_data(): try: data = request.get_json() # Process data return jsonify({'message': 'Data processed successfully'}) except Exception as e: return jsonify({'error': str(e)}), 500 if __name__ == '__main__': app.run(debug=True) /submit-data and returns appropriate JSON responses for success or error.Using Fetch API with Flask
fetch('/api/data') .then(response => response.json()) .then(data => console.log('Data received:', data)) .catch(error => console.error('Error fetching data:', error)); /api/data endpoint in JSON format.Handling AJAX Response in Flask
from flask import Flask, jsonify app = Flask(__name__) @app.route('/get-data', methods=['GET']) def get_data(): data = {'key': 'value'} return jsonify(data) if __name__ == '__main__': app.run(debug=True) /get-data.react-responsive-carousel refactoring ms-office rules logstash win-universal-app lamp amazon-ec2 http-status-codes yaml