当前位置: 首页 > article >正文

【flask】 前后端通信方式 原生js的ajax,总结

前端接收参数

#如果是路径参数如:/auth/<email>
#渲染模版并向html页面传参数
@app.route('/blog/<blog_id>')
def blog_detail(blog_id):
    return render_template('blog_detail.html',blog_id=blog_id)
    
#如果 methods是post说明参数在请求体里面,
request.form['参数key’] 
Request.form.get[‘key']

#如果 methods 是get 说明参数在url路径里面
request.args.get(‘key’)
request.values.get(‘key')

例子是前端需要给邮箱发送验证码。所以需要填写邮箱,然后点击按钮,发送验证码给所填写的邮箱。

前段传递给后段数据(ajax)
这里的例子是js的ajax,js部分逻辑:
首先是获取到按钮,给按钮添加点击事件。点击事件内部逻辑为获取到邮箱输入框中所输入的邮箱,并将其传递给后端。
js中的ajax如果要传递参数,如果是get参数直接在url后面填写即可;如果是post参数,需要在xhr.send()方法后面添加所要传递的参数。参数之间用’&’连接

#发送post参数
xhr.send("email=+email+&username=+username);

整体js代码

window.onload=function(){
    var getVerificationCodeButton = document.getElementById("captcha-btn");
    getVerificationCodeButton.addEventListener('click',function(){
        var inputElement = document.getElementById("exampleInputEmail1");
        var email = inputElement.value;
        //1.创建对象
        const xhr = new XMLHttpRequest();
        //2.初始化xhr对象
        xhr.open('POST','/auth/sendVerificationCode');
        //设置请求头
        xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded'); //固定语法
        //3.发送请求,在这里,可以传请求体参数
        xhr.send("email="+email);
        //4.事件绑定 处理服务器端返回的结果
        //on when
        //readystate是xhr对象中的属性,表示状态
        //0未初始化,刚开始
        //1表示open调用完毕,2表示send方法调用完毕
        //3表示服务端返回部分结果,4表示返回全部结果
        xhr.onreadystatechange = function(){
            //判断服务器已经返回了所有结果
            if(xhr.readyState === 4){
                if(xhr.status >= 200 && xhr.status<300){
                    //处理结果 行 头 空行 体
                    console.log(xhr.status);//响应状态码
                    console.log(xhr.statusText);//状态字符串
                    console.log(xhr.getAllResponseHeaders);//所有响应头
                    console.log(xhr.response);//响应体
                }
            }
        }
    })
}

后端接收参数代码

#发送验证码到邮箱 —这个auth是使用蓝图的哦
@auth.route("/sendVerificationCode",methods=["POST","GET"])
def send_verification_code():
    email = request.form.get("email")
    print(email)
    message = Message(subject="发送验证码测试", recipients=[email], body="邮箱发送验证码测试");
    mail.send(message);
    return "发送验证码"

http://www.kler.cn/a/373281.html

相关文章:

  • Kubernetes中的网络模型:Service、Ingress、Pod通信详解
  • IDEA集成JProfiler
  • 开源代码管理平台Gitlab如何本地化部署并实现公网环境远程访问私有仓库
  • 10.30学习
  • unordered_map、unordered_set 底层原理及其相关面试题
  • yocto 下基于SDK的 tcpdump 移植
  • 【面试全纪实 | Linux 03 安全类】请回答,你真的了解Linux吗?
  • 推荐基于Hadoop的大数据相关环境安装
  • 【WPF】用于图形绘制的三个重要类:Canvas 类,PathGeometry 类,Path 类
  • 天锐绿盾加密软件与Ping32:企业数据安全备受关注的两款加密软件
  • 算法定制LiteAIServer视频智能分析软件的过亮、过暗及抖动检测应用场景
  • 【项目实战】通过LLaMaFactory+Qwen2-VL-2B微调一个多模态医疗大模型
  • 【01】ZooKeeper特性与节点数据类型
  • 【LLM论文日更】LongReward:利用人工智能反馈改进长上下文大语言模型
  • 【贪心算法】(第十二篇)
  • 鸿蒙生态崛起带来的机遇与挑战
  • React面试常见题目(基础-进阶)
  • 使用Selenium时,如何模拟正常用户行为?
  • Python数据分析NumPy和pandas(十六、文本格式数据的读取与存储:csv、json、xml和html)
  • 使用 BERT 和逻辑回归进行文本分类及示例验证
  • Pycharm,2024最新版Pycharm现在安装环境配置汉化详细教程!
  • 网管平台(三):如何高效管理无线网络
  • leetcode:面试题 05.07. 配对交换(python3解法)
  • 第二十章 Vue组件通信之父子通信
  • Flutter Color 大调整,需适配迁移,颜色不再是 0-255,而是 0-1.0,支持更大色域
  • Spring5学习记录(一)之IOC容器管理(基于XML方式)