首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jqGrid Ajax在beforeSubmit中的验证

jqGrid Ajax在beforeSubmit中的验证
EN

Stack Overflow用户
提问于 2012-03-21 16:50:41
回答 1查看 3.4K关注 0票数 0

我有一个用于创建新用户的jqGrid表单,我希望确保(在表单提交的其他字段中)用户名不存在于数据库中。

因此,我创建了一个beforeSubmit操作,该操作在按submit按钮时执行,但在表单提交之前执行。

我认为这个函数可以工作,因为下面的代码总是返回“用户存在”;

函数(postdata,formid) {User,“用户存在”;}

但是,当我尝试使用$.get向服务器发出ajax请求以查看用户名是否已经存在时,我总是会得到一个k is undefined错误。这是产生错误的代码。

函数(postdata,formid) { $.get("project-management?r=Users/usernameExists&tmpl=json&username=“+ postdata.username,函数(数据){ 返回虚假,“存在”; );}

我知道这不是真正的验证,但不应该产生与第一个脚本相同的结果吗?

非常感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-21 18:26:37

首先,我解释为什么您的代码不像您预期的那样工作。

方法$.get异步工作。所以

  • 函数beforeSubmit首先启动$.get
  • 然后返回undefined值,因为beforeSubmit函数的主体将完成。
  • 然后,在异步$.get请求从服务器获得响应后,将调用function(data) {回调(它是success回调)。
  • 您的success回调从回调返回值return[false,"Exists"];$.get不分析来自success回调的任何返回值,因此$.get将丢弃数组[false,"Exists"]

您可以使用$.ajaxasync: false参数,而不是$.get作为解决办法,但更好的做法是根本不实现任何beforeSubmit。如果您的基于服务器的代码发现无法保存用户更改,或者输入字段包含一些验证错误,则服务器应该返回具有错误HTTP状态码的响应。在验证错误( 客户端错误 )时,状态代码可以是400或更高,如果在服务器- 服务器错误上处理请求时出现其他错误,则状态代码可以是500或更高。服务器响应的主体可以是jqGrid将向用户显示的消息的HTML片段。

您可以针对errorTextFormat回调自定义错误消息。有关其他信息,请参阅这里这里

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9809170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档