自学 Flask 系列(三)通过ajax实现前后端 json 数据交互

本文介绍如何在Flask应用中使用Ajax进行JSON数据的前后端交互,通过前端js代码和后端Flask处理逻辑,演示了一个简单的数据交互Demo,确保数据传递的正确性和防止出现转义字符、乱码问题。
摘要由CSDN通过智能技术生成

在web 中经常会遇到 前后端 数据交互的问题,这个时候就离不开ajax 。
ajax中经常用到的数据格式是json,可以防止出现转义字符,乱码等问题。

本文简单的展示一个demo,用ajax 来前后端 json格式 数据 进行交互。

前端 js 代码

        $('#cc').click(function () {
            data_dict = {
                'name1': 'aaaa1','name2': 'aaaa2','name3': 'aaaa3','name4': 'aaaa4'//要发送的字典,在JavaScript里被定义为对象
            }; //传输数据
            $.ajax({
                type: 'POST',
                url: '/send',
                data: JSON.stringify(data_dict),//将对象打包成json的字符串发送,对应下面也要将字符串解码成字典
                contentType: 'application/json;charset=UTF-8',//编码格式
                dataType: 'json',
                success: function (data) {
                    console.log(typeof(data["calc"]));//打印为字符串
                    console.log(data["calc"]);//打印为对象object
                }
            })
        })

后端 flask 处理逻辑

from flask import Flask,render_template, request, url_for, jsonify
import os
import json
import sys
import subprocess

app = Flask(__name__)//与下面的  app.run()对应
app.config['SECRET_KEY'] = "dfdfdffdad"

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/send', methods=['POST'])
def upload_file():
    a=request.get_data()//得到JavaScript发送的字符串流
    print(type(a))//bytes
    s1 = str(a, encoding='utf-8')//解码为string
    print(type(s1))
    print(s1)
    user_dict1 = json.loads(s1)//将string变成dict
    for key in user_dict1.keys():
        print(key,user_dict1[key])
    user_dict = json.loads(a)//将bytes变成dict
    
    for key in user_dict.keys():
        print(key,user_dict[key])
    dict4={"calc":"success"}
    return jsonify(dict4)

if __name__ == '__main__'://flask实例化,上面相当于类的子函数
    app.run()

前台接受成功的话,会在web 控制台 输出 返回的 “success”。

下面是使用 AJAX 进行前后端连接交互的示例代码: 前端代码: ```javascript const fetchUser = (id) => { $.ajax({ url: `http://localhost:8000/api/users/${id}`, type: 'GET', dataType: 'json', success: (response) => { console.log(response); }, error: (xhr, status, error) => { console.error(error); } }); }; const createUser = (user) => { $.ajax({ url: 'http://localhost:8000/api/users', type: 'POST', dataType: 'json', contentType: 'application/json', data: JSON.stringify(user), success: (response) => { console.log(response); }, error: (xhr, status, error) => { console.error(error); } }); }; ``` 后端代码: ```python from flask import Flask from flask import jsonify, request app = Flask(__name__) users = [ {'id': 1, 'name': 'Alice'}, {'id': 2, 'name': 'Bob'}, {'id': 3, 'name': 'Charlie'}, ] @app.route('/api/users/<int:id>', methods=['GET']) def get_user(id): for user in users: if user['id'] == id: return jsonify(user) return jsonify({'error': 'User not found'}) @app.route('/api/users', methods=['POST']) def create_user(): user = request.json user_id = len(users) + 1 user['id'] = user_id users.append(user) return jsonify(user) if __name__ == '__main__': app.run(port=8000) ``` 在上面的示例中,前端使用 jQuery 库进行 AJAX 请求,并向 Flask 框架开发的后端应用提供的 RESTful API 发送请求。后端应用接收请求并返回 JSON 格式的数据。在后端应用中,使用 Flask 框架创建了两个路由,分别用于获取和创建用户数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值