ajax禁止表单提交表单
很多同学在进行编程学习时缺乏系统学习的资料。本页面基于ajax禁止表单提交表单内容,从基础理论到综合实战,通过实用的知识类文章,标准的编程教程,丰富的视频课程,为您在ajax禁止表单提交表单相关知识领域提供全面立体的资料补充。同时还包含 android、a href、abap 的知识内容,欢迎查阅!
ajax禁止表单提交表单相关知识
-
form 表单序列化参数,ajax提交①form表单的参数序列化后,然后提交。$.ajax({ type: 'post', url:$form1.attr("action"), data:$form1.serializeArray(),//序列化参数 dataType:"json", success: function(json){ if("200" == json.statusCode){ }else{ alertMsg.warn(json.message); } }});②form表单的onsubmit( ) 就是在提交按钮的同时进行的操作。通过我们有回调验证等。onsubmit="return validateCallback(this, dialogAjaxDone)"
-
php防止表单的重复提交在php中如何防止表单的重复提交,下面分享一种方法。<?php/** php中如何防止表单的重复提交*/session_start();if (empty($_SESSION['ip'])) {//第一次写入操作,判断是否记录了IP地址,以此知道是否要写入数据库$_SESSION['ip'] = $_SERVER['REMOTE_ADDR']; //第一次写入,为后面刷新或后退的判断做个铺垫//...........//写入数据库操作 www.jbxue.com} else {//已经有第一次写入后的操作,也就不再写入数据库echo '请不要再次刷新和后退'; //写一些已经写入的提示或其它东西}?>其它参考方法:1、在页面生成随机码,也就是每次提交随机码都不一样,在提交的时候验证随机码!2、在提交的时候,验证如果数据存在,就不提交了.
-
十三章 php防止表单重复提交详解php防止表单重复提交详解 用户提交表单时可能因为网速的原因,或者网页被恶意刷新,致使同一条记录重复插入到数据库中,所以不能忽视的一个限制是防止用户重复提交表单,因为有可能用户连续点击了提交按钮或者是攻击者恶意提交数据,那么我们在提交数据后的处理如修改或添加数据到数据库时就会惹上麻烦。 那么如何规避这中重复提交表单的现象出现呢?就需要从多方面来进行限制,下面我们来汇总一下PHP防止表单重复提交的几种常用方法。 第一、首先从前端做限制。 前端JavaScript在按钮被点击
-
Jquery通过Ajax方式来提交Form表单的具体实现提交Form表单的方法有很多,在本文为大家介绍下Jquery通过Ajax方式是如何提交Form表单的今天刚好看到Jquery的ajax提交数据到服务器的方法,原文是:保存数据到服务器,成功时显示信息。jQuery 代码: 代码如下:$.ajax({type: "POST",url: "some.php",data: "name=John&location=Boston",success: function(msg){alert( "Data Saved: " + msg );}});后来我就想了一下,我要提交form表单有没有办法呢?但是我不可能每个fom的input都写一次var demo=$("#divname").val();的.后来,今天我看到一个方法,就是.map,就做出一下想法了,可以借鉴哟;html代码如下,下面我要提交Form 的id为dlg_form的所有input数据, 代码如下:
ajax禁止表单提交表单相关课程
ajax禁止表单提交表单相关教程
- 4. 不使用 form 提交表单 不使用 form 标签来提交表单,通常都是使用 AJAX 进行数据交互的情况。这个时候就不需要拦截 form 的提交行为了。<style> h3 {margin-top: 0;color: #4caf50;} .login {width: 300px;padding: 32px;box-shadow: 2px 2px 10px rgba(0, 0, 0, .1);position: fixed;top: 40%;left: 50%;transform: translate(-50%, -50%);} .form-item {display: flex;margin-bottom: 16px;border-bottom: 1px solid #ccc;} .form-item .title {width: 70px;color: #666;font-size: 14px;} .form-item .content {flex: 1;} .form-item .content input {width: 100%;border: 0 none;padding: 2px 8px;outline: none;font-size: 16px;} .login-btn {width: 100%;border: 0 none;background-color: #4caf50;color: white;margin-top: 16px;outline: none;height: 32px;} .login-btn:active {background-color: #2da050;}</style><div class="login"> <h3>登入</h3> <label class="form-item"> <div class="title">用户名</div> <div class="content"> <input autocomplete="off" id="account" class="account" name="account" type="text"> </div> </label> <label class="form-item"> <div class="title">密码</div> <div class="content"> <input autocomplete="off" name="pwd" type="password"> </div> </label> <div> <button class="login-btn" type="button">登入</button> </div></div><script>var loginBtn = document.querySelector('.login-btn');var pwdEle = document.querySelector('[name="pwd"]');function login(cb) { // 假装登入花了 1 秒 setTimeout(function() { alert('登入成功'); cb && cb(); }, 1000);}loginBtn.addEventListener('click', function() { var pwd = pwdEle.value; if (pwd.length < 6 || pwd.length > 16) { alert('密码长度 6-16'); return; } login(function() { window.location.href = 'https://imooc.com'; });});</script>使用这种方式,就可以自主控制流程,不需要再考虑 form 标签的行为。
- HTML 表单 大部分情况下,网页中展示的数据或者图片或者多媒体效果都是静态的数据,但是有时用户需要通过网页跟服务器进行动态的数据交互,例如登录、注册等操作,这时需要用到表单。表单其实是由一些输入框、单选、复选框等元素组成,用户点击提交按钮,浏览器会将这些数据发送给表单设置的 URL ,URL 对应的服务器接收到数据并处理之后,再将数据返回给浏览器。
- 3. 校验表单项 获取到表单项后,就可以对表单项的值做判断了,如密码必须是 6-16 位:<style> h3 {margin-top: 0;color: #4caf50;} .login {width: 300px;padding: 32px;box-shadow: 2px 2px 10px rgba(0, 0, 0, .1);position: fixed;top: 40%;left: 50%;transform: translate(-50%, -50%);} .form-item {display: flex;margin-bottom: 16px;border-bottom: 1px solid #ccc;} .form-item .title {width: 70px;color: #666;font-size: 14px;} .form-item .content {flex: 1;} .form-item .content input {width: 100%;border: 0 none;padding: 2px 8px;outline: none;font-size: 16px;} .login-btn {width: 100%;border: 0 none;background-color: #4caf50;color: white;margin-top: 16px;outline: none;height: 32px;} .login-btn:active {background-color: #2da050;}</style><form name="login-form" class="login" action="https://imooc.com"> <h3>登入</h3> <label class="form-item"> <div class="title">用户名</div> <div class="content"> <input autocomplete="off" id="account" class="account" name="account" type="text"> </div> </label> <label class="form-item"> <div class="title">密码</div> <div class="content"> <input autocomplete="off" name="pwd" type="password"> </div> </label> <div> <button class="login-btn" type="submit">登入</button> </div></form><script> var loginForm = document.forms['login-form']; var pwdEle = loginForm.pwd; loginForm.onsubmit = function(e) { var pwd = pwdEle.value; if (pwd.length < 6 || pwd.length > 16) { alert('密码长度 6-16'); return false; // 可以使用 return e.preventDefault() 代替 } setTimeout(function() { alert('登入成功,马上跳转!'); }, 1000); };</script>这里获取到了表单元素,同时给表单的事件处理器属性 onsubmit 赋值,表示在表单被提交的时候做的事情。在事件处理器中,通过输入框的 value 属性获取到了输入的值,对值进行了长度判断,如果长度不正确则返回 false,表单则会终止提交。如果正确,则会根据 form 标签的 target 属性进行提交。需要注意的是,这里如果使用 addEventListener 来监听 submit 事件,必须使用 preventDefault 来阻止默认事件,即阻止表单提交,不能使用 return false;。var loginForm = document.forms['login-form'];var pwdEle = loginForm.pwd;loginForm.addEventListener('submit', function(e) { var pwd = pwdEle.value; if (pwd.length < 6 || pwd.length > 16) { alert('密码长度 6-16'); e.preventDefault(); // 代替return false return; } setTimeout(function() { alert('登入成功,马上跳转!'); }, 1000);});
- 2.2 表单认证 2.2.1 表单认证的过程说明Spring Security 支持从 HTML 的 Form 表单形式提交登录用户信息。表单认证可分为以下步骤:用户请求受保护资源;Spring Security 的 FilterSecurityInterceptor 对象,检测到当前用户认证未通过,应予以拒绝,并抛出 AccessDeniedException;当 AccessDeniedException 被 ExceptionTranslationFilter 接收后,其认定需要发起认证流程,此时用户被要求登录,认证服务器将登录地址(默认由 LoginUrlAuthenticationEntryPoint)返回给客户端;客户端浏览重定向到登录页面;登录页面有服务端渲染生成。图 2 表单登录流程当用户提交登录信息,认证服务器端的 UsernamePasswordAuthenticationFilter 就会被执行。此过程的具体执行过程如下:UsernamePasswordAuthenticationFilter 产生 UsernamePasswordAuthenticationToken,并存入从请求中获取的用户名、密码等信息;创建出的 Token 被传递给 AuthenticationManager 用于认证;认证成功或失败的后续流程同上一小节中关于 AbstractAuthenticationProcessingFilter 的执行过程一致。2.2.2 表单认证的开启默认情况下,Spring Security 开启了表单认证功能。如果我们需要显式配置,可用如下方式实现。创建 Security 配置文件: src/main/java/imooc/springsecurity/usernamepassword/config/WebSecurityConfig.java,并在其中添加 http.formLogin(withDefaults()) 的配置,完整代码如下:package imooc.springsecurity.usernamepassword.config;import org.springframework.context.annotation.Configuration;import org.springframework.security.config.Customizer;import org.springframework.security.config.annotation.web.builders.HttpSecurity;import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;@Configurationpublic class WebSecurityConfig extends WebSecurityConfigurerAdapter { protected void configure(HttpSecurity http) throws Exception { http.formLogin(Customizer.withDefaults()); }}访问 http://localhost:8080/user/me ,网页会自动跳转到登录页面。登录页面输入默认生成的用户名 「user」, 默认生成密码可在控制台日志中找到。如下图:提交登录后,通过认证,我们将在浏览器看到当前登录的用户名。当前登录用户为:「user」2.2.3 表单认证的配置默认情况下,表单登录的跳转地址是 /login,登录参数中用户名变量名为 username,密码变量名为 password。如果我们需要修改这些配置信息,可以通过如下方式实现:在 configure(HttpSecurity http) 方法中,为 http 的 formLogin 项修改配置。 protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .antMatchers("/login").permitAll() // 表单认证页面不需要权限 .anyRequest().authenticated(); // 其他页面需要登录用户才能访问 http.formLogin() .loginPage("/login") // 自定义表单认证页面地址 .usernameParameter("user") .passwordParameter("pass"); http.csrf().disable(); // 关闭 csrf 以通过认证,注意,这不是最好的做法,后续章节会有介绍。 }当然这一步中配置 /login 页面需要我们自己去实现。这里有几个需要注意的地方:自定义表单提交地址为 /login ,提交方法仅支持 POST;表单需要支持 CSRF 票据,即附带 _csrf 参数;用户名字段需要命名为 user;密码字段需要命名为 pass;当认证失败时,表单页面会收到 error 参数;当用户退出成功时,表单页面会收到 logout 参数。为了测试上述配置,我们创建一个测试登录页:新建 src/main/java/imooc/springsecurity/usernamepassword/controller/LoginController.java。package imooc.springsecurity.usernamepassword.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;@Controllerpublic class LoginController { @RequestMapping("/login") public String viewLogin2() { return "/login.html"; }}新建 src/main/resources/templates/login.html<form method="post" action="/login"> <input type="text" name="user"> <input type="password" name="pass"> <input type="submit" value="登录"></form>访问测试:http://localhost:8080/user/me ,此时跳转到我们新建的登录页面。登录页面输入用户名密码后可看到用户信息。
- 2. 对象 / 表单 以表单的方式提交数据有一个优点,可以把逻辑上具有内在联系的多个数据同时发送给服务器。原生 Servlet 开发时,服务器端的响应组件(Servlet)中,需要开发者编写代码从请求包一个一个解析出提交过来的数据。如果数据量不多,倒还好,如果数据量较多,一个一个解析,枯燥乏味的工作除了让人厌烦,且会耽误开发效率。来!通过一个案例,体会 Spring MVC 是如何一步到位解析大量数据的。案例需求描述: 实现用户注册功能。流程分析: 通过注册页面,用户输入个人信息。表单中的数据以 POST 的请求方式提交至服务器,服务器端的控制器对提交过来的数据进行处理。实现流程:
- 1. form 表单的使用 form 标签和 ul select 标签类似,代表表单整体,而里面嵌套的元素则是表单具体的内容。我们来做一个用户名和密码的表单,这需要用到之前我们讲的 label 标签和 input 标签的知识,代码如下:<form> <label for="username">用户名</label> <input type="text" id='username'> <br> <label for="password">密码</label> <input type="password" id="password"></form>效果如下:表单呈现的形式和普通输入框无异,但它的作用就是我们要做提交表单的操作(既我们需要把用户输入的信息传给后台),那么普通的输入框就做不到这个功能了。那么提交表单的时候,我们可以给 form 标签加上一个 method 属性,这个属性表示当前提交表单的方式,一般为 get 或者 post,这个需要后台先行告知。form 标签还有一个 action 属性,表示表单提交的地址,这个也需要后台先行告知。
ajax禁止表单提交表单相关搜索
-
ajax
android
a href
abap
abap开发
abort
absolutelayout
abstractmethoderror
abstracttablemodel
accept
access
access教程
accordion
accumulate
acess
action
actionform
actionlistener
activity
addeventlistener