提交时,如何先验证信息,信息无误的话,再提交到后台

langtaofozu 2016-12-14 03:52:28
Html---------------------
<form runat="server" id="form1" >
用户名:<input type="text" id="userName"><span id="msg"></span>
<input type="submit" value="提交">
</form>

Js-----------------------
$("#userName").blur(function(){
checkUserName();
});

function checkUserName()
{
var username = $("#userName").val();
if (username.length < 3 || username.length > 15)
{
$("#msg_userName").text("用户名需要在3-15位字符之间");
return false;
}
$.post("CheckUserName.ashx", { "userName": username }, function (data) {
if (data == "ok") {
$("#msg_userName").text("输入正确!");
return true;
} else {
$("#msg_userName").text("该用户名已存在!");
return false;
}
});
return true;
}

Cs---------CheckUserName.ashx-------------
//获取用户输入的信息
string userName = context.Request["userName"];

//根据用户输入的用户名,查询数据库中是否有此信息
string sqlStr = "userName='" + userName + "'";//查询语句
BLL.Users users = new BLL.Users();
DataSet ds = users.GetList(sqlStr);

if (ds.Tables[0].Rows.Count > 0)
{
context.Response.Write("no");
}
else
{
context.Response.Write("ok");
}

Cs-------.aspx.cs------------
//获取用户输入的信息
string userName = context.Request["userName"];
Model.user userModel=new Model.user();
userModel.userName=userName ;
BLL.user userBll=new BLL.user();
userBll.Add(userModel);



若是我在form标签中,加入onsubmit="return checkUserName();",提交的时候倒是可以检查出来‘用户名需要在3-15位字符之间’,此时不会提交到后台,数据更不会插入到数据库;
但是我若是输入了一个数据库中已经存在的用户名,运用ajax,可以检查出来,并显示提示文字:‘该用户名已存在’;但是若是直接输入已经存在的用户名,直接点提交的话,不会出现任何报错文字,而且后台数据库中也会插入该条信息。

所以,想问下大神,到底怎么设置,可以让【输入已经存在的用户名】,直接点提交时,出现报错信息,且不会向后台提交任何数据。
一个具体的例子:百度云输入验证码,若是输入不正确,点击提交时,会立马出现‘验证码输入错误’的提示,此时百度云不会登录。
...全文
496 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
笑容融化坚冰 2016-12-17
  • 打赏
  • 举报
回复
若是我在form标签中,加入onsubmit="return checkUserName();",提交的时候倒是可以检查出来‘用户名需要在3-15位字符之间’,此时不会提交到后台,数据更不会插入到数据库; [/quote] 没太细看,不过既然你写了onsubmit="return checkUserName();",那么checkUserName函数的最后一句要写上return false,阻止继续提交默认的submit;ajax回调函数的return false,和外层函数没直接关系,不能阻止sumit的重复调用,这个新手也可能初心犯错。
langtaofozu 2016-12-14
  • 打赏
  • 举报
回复
引用 10 楼 xiaojie_cp 的回复:
感觉你的checkUserName返回了true导致表单提交,建议在ajax中console.log一下ajax返回的data看看,究竟返回了什么数据。
谢谢,应该是同步异步的问题,我去调试调试
langtaofozu 2016-12-14
  • 打赏
  • 举报
回复
引用 9 楼 closurer 的回复:
前端脚本异步请求服务器验证。
恩恩,应该就是同步异步的问题,我试试去
lovebaby 2016-12-14
  • 打赏
  • 举报
回复
感觉你的checkUserName返回了true导致表单提交,建议在ajax中console.log一下ajax返回的data看看,究竟返回了什么数据。
闭包客 2016-12-14
  • 打赏
  • 举报
回复
前端脚本异步请求服务器验证。
zhanglong_longlong 2016-12-14
  • 打赏
  • 举报
回复
光标失去焦点检测,提交是检测
langtaofozu 2016-12-14
  • 打赏
  • 举报
回复
引用 5 楼 xiaozhihui5535 的回复:
不提交数据 你怎么知道用户名存在? 你提交数据到后台返回ok或no,难道就不会返回别的了吗,或者用json不可以吗?
blur,光标失去焦点的时候,就会提交数据了。json 的话,一样的错误/(ㄒoㄒ)/~~
langtaofozu 2016-12-14
  • 打赏
  • 举报
回复
引用 4 楼 zeratul1990 的回复:
为啥要走两遍后台,提交后台的时候验证不行吗
提交后台是有验证的,主要是想用ajax实现客户端验证,因为一旦用户输入一个错误提交了,到达报错页面,再回来重新注册,那么原先输入的信息都不会存在了,这样用户体验度不是很好。当然用cookie也可以
_萧萧 2016-12-14
  • 打赏
  • 举报
回复
不提交数据 你怎么知道用户名存在? 你提交数据到后台返回ok或no,难道就不会返回别的了吗,或者用json不可以吗?
拜一刀 2016-12-14
  • 打赏
  • 举报
回复
为啥要走两遍后台,提交后台的时候验证不行吗
langtaofozu 2016-12-14
  • 打赏
  • 举报
回复
引用 2 楼 lizeyuan8238386 的回复:
你的 $.post 是一个异步请求,就是说你的post请求发送到服务器之后,post后面的代码【根本没有等待这个post请求返回请求结果】就执行了,所以总是执行最后一个return true ,一般说到这里你就知道怎么解决了
恩恩,应该是线程问题,但是还是不知道怎么解决。/(ㄒoㄒ)/~~,大神可以在赐教一点不(看我纯真的眼神)
  • 打赏
  • 举报
回复
你的 $.post 是一个异步请求,就是说你的post请求发送到服务器之后,post后面的代码【根本没有等待这个post请求返回请求结果】就执行了,所以总是执行最后一个return true ,一般说到这里你就知道怎么解决了
lovebaby 2016-12-14
  • 打赏
  • 举报
回复
通过浏览器的network看一下返回值吧
CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 该资料是《Android高级编程》的源代码 对应的书籍资料见: Android高级编程 基本信息 原书名: Professional Android Application Development 原出版社: Wrox 作者: (英)Reto Meier 译者: 王鹏杰 霍建同 出版社:清华大学出版社 ISBN:9787302228448 上架间:2010-7-1 出版日期:2010 年6月 开本:16开 页码:398 版次:1-1 内容简介   android提供一个开放的开发环境,为针对移动设备编写创新应用程序带来了激动人心的新机遇。作为使用androidsdk构建这些应用程序的实用指南书籍,《android高级编程》从始至终穿插了一系列示例项目,每个项目都引入android的新功能和新技术,以助您达到最圆满的学习效果。书中介绍android的所有基本功能,并通过简明扼要的示例引导您使用高级功能。    《android高级编程》首简要介绍android软件栈,接着陈述为手机创建稳定可靠、赏心悦目的应用程序的基本原理。通过学习,您可以打下牢固的理论根基,了解使用当前android 1.0 sdk编写定制移动程序所需的知识,还能灵活快捷地运用未来的增强功能构建最前沿的解决方案。    主要内容    ◆android移动开发的最佳实践    ◆简要介绍活动、intent、清单和资源    ◆如何使用布局和定制view创建用户界面    ◆存储和共享应用程序数据的技术    ◆如何创建基于地图的应用程序,如何使用gps和地理编码位置等基于位置的服务    ◆如何创建和使用后台服务及notification    ◆使用加速计、指南针和摄像头硬件    ◆与电话和网络硬件相关的所有内容,如电话api、sms和网络管理等    ◆高级开发主题,包括安全、ipc以及一些高级图形和用户界面技术    读者对象    本书面向希望在android手机平台上创建应用程序的所有人员。不管是经验丰富的移动开发人员,还是初出茅庐的新手,都能从本书提供的宝贵信息中获益。 作译者   Reto Meier出生于澳大利西南的珀斯市,现居伦敦。 Reto是一位经验丰富的软件开发人员,拥有逾10年的GUI程序架构、设计和开发经验。他在涉足IT行业前曾从事过海洋石油和天然气开发以及金融工作。 Reto始终不渝地追求掌握新技术,从2007年Android发布之初Reto就迷恋上了此项技术。他利用业余间研究包括WPF在内的多种开发平台以及Google的各种开发工具。 详情请访问Reto的个人网站RadioactiveYak,网址是http://blog.radioactiveyak.com。 目录 封面 -14 封底 -13 扉页 -12 版权 -11 作者简介 -10 前言 -9 目录 -4 第1章 Android简介 1 1.1 一些背景信息 2 1.1.1 不远的过去 2 1.1.2 未来的前景 2 1.2 对Android的误解 3 1.3 开放的移动开发平台 3 1.4 自带的Android应用程序 4 1.5 Android SDK功能 5 1.5.1 对包括摄像头、GPS和加速计在内的硬件的访问 5 1.5.2 自带的Google地图、地理编码和基于位置的服务 6 1.5.3 后台服务 6 1.5.4 SQLite 数据存储和检索数据库 6 1.5.5 共享数据和应用程序间通信 7 1.5.6 使用Google Talk的P2P服务 7 1.5.7 扩展的数据支持和2D/3D图形 7 1.5.8 优化的内存和进程管理 8 1.6 开放手机联盟简介 8 1.7 运行Android的环境 8 1.8 从事Android开发的原因 9 1.8.1 推动Android普及的因素 9 1.8.2 Android的独到之处 10 1.8.3 改变移动开发格局 10 1.9 开发框架简介 11 1.9.1 开发包中的资源 11 1.9.2 理解Android软件栈 12 1.9.3 Dalvik虚拟机 13 1.9.4 Android应用程序架构 14 1.9.5 Android库 14 1.9.6 高级Android库 15 1.10 小结 16 第2章 开始入手 17 2.1 Android开发 18 2.1.1

62,050

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧