ajax异步判断用户名重复,阻止表单提交

zzw进击的菜鸟 2015-12-04 03:13:12
$("#reg-form").submit(function () {
if (!UsernameValidate() ) {
return false;
}
});
$("#UserName").blur(UsernameValidate)
function UsernameValidate() {
var val;
var name = $("#UserName").val();
$.ajax({
url: '/User/UsernameValidate?name=' + name,
type: 'POST',
async:false,
success: function (data) {
if (data == "null") {
$("#Usernamemessage").text("用户名不能为空");
val = false;
}
else if (data == "repeat") {
$("#Usernamemessage").text("用户名重复");
val = false;
}
else if (data == "pass") {
$("#Usernamemessage").text("");
val = true;
}
}
});
return val;
...全文
720 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
奋斗的小壁虎 2015-12-04
  • 打赏
  • 举报
回复
这是没搞懂的Ajax怎么用啊,楼上点评参考吧
zzw进击的菜鸟 2015-12-04
  • 打赏
  • 举报
回复
恩,懂了,ajax初学,有点吃力
  • 打赏
  • 举报
回复
引用 1 楼 qin122333 的回复:
如果把async:false去掉,验证正确提交表单也会被阻止,这是为什么?
异步程序是为了提高用户体验,因此必定要把 async:false 去掉的。因此要按照异步机制来设计程序,它与同步执行的程序设计思路完全不同!不要用异步的编程语法来模拟同步操作。
  • 打赏
  • 举报
回复
要搞懂什么是“异步”! 函数 UsernameValidate 在还没有访问服务器之前,就立刻返回了,它不会等 val 有所改变就直接返回 false 了。因此你的代码说明你还没有理解“异步、回调”的基本机制。因此你的这个设计,整体上必定失败。 你需要捕获相应按钮的click 事件(而不是 reg-form 的 submit),然后在 UsernameValidate 经过 success 回调之后,再来调用form 的submit 方法。把思路理清楚了先。
KIDbody 2015-12-04
  • 打赏
  • 举报
回复
你去掉async:false就是异步执行ajax,就会使ajax不一定在你前面的验证方法之后执行,因为是异步的。
KIDbody 2015-12-04
  • 打赏
  • 举报
回复
把验证写在UsernameValidate方法里面
KIDbody 2015-12-04
  • 打赏
  • 举报
回复
教你一个实时验证的插件,验证不需要这么麻烦。不需要写这么多重复的验证规则。你百度jquery.Validation,有很多介绍
zzw进击的菜鸟 2015-12-04
  • 打赏
  • 举报
回复
如果把async:false去掉,验证正确提交表单也会被阻止,这是为什么?

62,247

社区成员

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

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

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

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