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

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 代码
});

相关文章:

  • 深度剖析ZooKeeper
  • 新书速览|GraphPad Prism图表可视化与统计数据分析:视频教学版
  • 接口自动化可视化展示
  • 业务流程和数据结构之间如何对应
  • 2025.05.20【Treemap】树图数据可视化技巧
  • 云计算与大数据进阶 | 27、存储系统如何突破容量天花板?可扩展架构的核心技术与实践—— 分布式、弹性扩展、高可用的底层逻辑(上)
  • 精益数据分析(73/126):黏性阶段的功能优先级法则——七问决策模型与风险控制
  • SpringBoot集成Jasypt对数据库连接密码进行加密、解密
  • 请问交换机和路由器的区别?vlan 和 VPN 是什么?
  • ip地址改了网络还能用吗?ip地址改了有什么后果
  • OSI 网络七层模型中的物理层、数据链路层、网络层
  • SpringBoot-6-在IDEA中配置SpringBoot的Web开发测试环境
  • Django基础(一)MVT 模式与 Django 框架
  • SpringBoot 项目实现操作日志的记录(使用 AOP 注解模式)
  • 「华为」持续加码人形机器人赛道!
  • 头歌实践平台:动态NAT配置
  • 网络安全面试题(一)
  • 基于Django开发校园食堂美食推荐系统
  • Spring Validation校验
  • 如何将内网的IP地址映射到外网?常见方法及详细步骤
  • 在深化教育科技人才一体发展上打头阵、当尖兵!陈吉宁调研复旦大学
  • 港股上市首日大涨,宁德时代“新动力”何在?曾毓群详谈零碳科技布局
  • 菲律宾华人“钢铁大王”撕票案两主谋落网,部分赎金已被提取
  • 上海国际电影节将于6月3日公布排片表,6月5日中午开票
  • 4月22城新房价格上涨:上海一二手房价环比均上涨,核心城市土地热带动市场热度提升
  • 河南通报部分未检疫生猪流入:立案查处,涉案猪肉被封存