jQuery没有't处理结果
jQuery doesn't process result
在我的脚本中,我发送数据来检查数据库中是否存在用户名,但用户仍然是创建的。我检查过控制器工作正常。我是否以正确的方式处理结果?
我的脚本
$( "#dialog-form" ).dialog({
autoOpen: false,
height: 600,
width: 350,
modal: true,
buttons: {
"Create an account": function() {
var bValid = true;
allFields.removeClass( "ui-state-error" );
var values = $("form").serialize();
$.ajax({
type: "POST",
url: "/checkLogin",
data: values,
success: function(result) {
bValid = result == 'true';}})
if ( bValid ) {
var values = $("form").serialize();
$.ajax({
type: "POST",
url: "${pageContext.request.contextPath}/addUser",
data: values
})
$( "#users tbody" ).append( "<tr>" +
"<td>" + login.val() + "</td>" +
"<td>" + fname.val() + "</td>" +
"<td>" + lname.val() + "</td>" +
"<td>" + bday.val() + "</td>" +
"<td>" + role.val() + "</td>" +
"<td>"+ "<a href='"/edit/" + login.val() + "'">Edit </a>"
+ "<a href='"/delete/" + login.val() + ".json'">Delete</a></td>" +
"</tr>" );
$( this ).dialog( "close" );
}
},
Cancel: function() {
$( this ).dialog( "close" );
}
},
close: function() {
allFields.val( "" ).removeClass( "ui-state-error" );
}
});
$( "#create-user" )
.button()
.click(function() {
$( "#dialog-form" ).dialog( "open" );
});
});
这是我的控制器
@RequestMapping(value="/checkLogin", method=RequestMethod.POST)
@ResponseBody
public boolean check(@RequestParam("login") String login) {
return (userService.findByLogin(login) == null);
}
这是我的html
<div id="dialog-form" title="Create new user">
<form:form >
<fieldset>
<label for="login">Login</label>
<input type="text" name="login" id="login" class="text ui-widget-content ui-corner-all" />
<label for="password">Password</label>
<input type="password" name="password" id="password" value="" class="text ui-widget-content ui-corner-all" />
</fieldset>
</form:form>
</div>
<button id="create-user">Add user</button>
以下是"创建用户"按钮功能的相关部分:
var bValid = true;
//...
$.ajax({
//...
success: function (result) {
bValid = result == 'true';
}
})
if (bValid) {
//create user
}
$.ajax
是异步的。这意味着,一旦激发ajax请求(并且在返回响应之前),就会继续执行if (bValid)
检查。由于您在上面将其定义为true,因此执行块并创建用户。
我看到两个选项:
将整个
if (bValid)
块移动到第一个ajax回调中。删除"usernameexists"ajax检查,并在用户创建过程中在服务器上进行验证(无论如何都应该这样做)。这样,您只需要一个ajax调用,用户就无法绕过验证。
相关文章:
- 如何处理findElements结果
- Angular自定义过滤器在处理某些匹配时注销,但会过滤掉所有结果
- jQuery无法处理ng个重复结果
- 如何处理'00'JSON中的结果是JS或Coldfusion
- 我使用ajax对我的网站的详细信息页面进行一些动态处理,但我得到了非常不好的结果
- Trigger.io::未处理的意向结果
- 使用AJAX上传文件、处理并使用Flask将结果返回到Javascript
- 如何从批处理文件调用一个带有2个参数的java脚本函数,并将结果返回到环境变量
- 使用jQuery生成POST表单并处理结果
- 处理结果集中的空值
- 提交表单,使用脚本处理信息,并在同一页面上显示结果
- 主干.js如何处理不返回结果的 GET 请求
- 在 Meteor 中,如何将查找查询的处理结果发布为游标
- 动态处理 ajax 结果
- 使用 Handlebars.js 处理 executeSql 语句的结果
- 将参数传递给 javascript 中的结果处理程序函数
- 如何在Node中处理多个异步回调的结果
- jQuery没有't处理结果
- 在跨域表单提交和处理结果方面需要帮助
- $q, $http和并行处理结果