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

ajax post请求 解决自动再get请求一次

ajax post请求 解决自动再get请求一次

  • HTML
  • javascript
  • Flask
  • 第一种方法:
  • 第二种方法:

HTML

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>登录</title></head>
<body>
<div class="container"><div id="msg"></div><form><div><label for="username">UserName</label><input type="text" name="username" id="username"></div><div><label for="password">Password</label><input type="password" name="password" id="password"></div><div><label for="check_code">Check Code</label><input type="text" name="check_code" id="check_code"></div><div><button type="button" onclick="Submit()">Login</button><!-- button标签一定要加type属性,禁止表单自动提交机制   --></div></form>
</div>
</body>
</html>

javascript

<script>
<script src="../jquery-3.7.1.min.js"></script>
function Submit(){$.ajax({url: '/post_login',type: 'POST',contentType: 'application/json',dataType: 'json',data: $('form').serialize(),  // 发送的数据success: function(res) {if (res.code === 200){alert(res.msg)}else {console.log(res, '999999')$('#msg').text(res.msg)}},error: function(error) {console.error('Error:', error);}});}
</script>

Flask

from flask import Flask
from flask import render_template, redirect, request, jsonify
app = Flask(__name__)@app.route('/', methods=['GET'])
@app.route('/login', methods=['GET'])
def get_login():# 获取登录页面return render_template('Login.html')@app.route('/post_login', methods=['POST'])
def post_login():# 用户登录,提交表单return jsonify(dict(code=401, msg='success'))

第一种方法:

button按钮中,把属性type设置为type="button",防止表单默认提交机制

<button type="button" onclick="Submit()">Login</button><!-- button标签一定要加type属性,禁止表单自动提交机制   -->

第二种方法:

JavaScript 事件监听器未正确处理
禁止自动提交机制

// 阻止默认的提交行为
$(document).on('click', 'button[type="submit"]', function(e) {e.preventDefault(); // 阻止默认的提交行为// 你的 AJAX 代码$.ajax({type: "POST",url: "/your-endpoint",data: { /* 数据 */ },success: function(response) {// 处理响应}});
});// 阻止表单的默认提交行为
$('form').on('submit', function(e) {e.preventDefault(); // 阻止表单的默认提交行为// 你的 AJAX 代码
});// 阻止事件进一步传播到其他事件处理器
$('button').on('click', function(e) {e.stopImmediatePropagation(); // 阻止事件进一步传播到其他事件处理器// 你的 AJAX 代码
});
http://www.xdnf.cn/news/7524.html

相关文章:

  • 黑马Java基础笔记-13常用查找算法
  • 山东大学软件学院项目实训-基于大模型的模拟面试系统-Vditor编辑器上传图片
  • Prompt Tuning:轻量级大模型微调全攻略
  • KC 喝咖啡/书的复制/奶牛晒衣服/ 切绳子
  • 打破建筑与制造数据壁垒:Revit 到 STP 格式转换全攻略(含插件应用 + 迪威模型实战)
  • 闲时处理技术---CAD C#二次开发
  • C++23 容器从其他兼容范围的可构造性与可赋值性 (P1206R7)
  • CoreBluetooth 入门:扫描并连接 BLE 手环实战
  • 安卓settings单双屏显示
  • Qt调用librdkafka
  • 基于ROS2/Gazebo的室内送餐机器人系统开发实战教程
  • 山东大学计算机图形学期末复习完结篇上——24历年题
  • 动力电池点焊机厂家:驱动新能源制造的精密力量|比斯特自动化
  • 5:OpenCV—直方图均衡化
  • MySQL 8.0 OCP 1Z0-908 161-170题
  • Go语言使用通义灵码辅助开发 - AI编程助手提升效率
  • PowerBI 矩阵实现动态行内容(如前后销售数据)统计数据,以及过滤同时为0的数据
  • 【jmeter】base64加密
  • RVTools 官网遭入侵,被用于分发携带 Bumblebee 恶意软件的篡改安装包
  • C++并发性能优化思路
  • [Vue]组件介绍和父子组件间传值
  • Linux下Docker使用阿里云镜像加速器
  • 企业级物理服务器选型指南 - 网络架构优化篇
  • 蓝桥杯5130 健身
  • 从代码学习数学优化算法 - 拉格朗日松弛 Python版
  • Mujoco 学习系列(二)基础功能与xml使用
  • SPA模式下的es6如何加快宿主页的显示速度
  • 《算法笔记》11.8小节——动态规划专题->总结 问题 D: Coincidence
  • 业务流程和数据结构之间如何对应
  • Java集合框架详解:单列集合与双列集合