我有一个带有用户名和密码的登录表单。 我与用户发布了一个Web服务的帖子,并作为参数传递,我找回了该用户的ID。
我想要实现的是在表单提交时,进行ajax调用,然后填充ID字段(我需要),然后使用$('#form1').post();
提交表单。
为了防止默认行为,我在return false;
事件的开头有一个.submit()
。
$('#form1').submit(function() { $('#sajax-loader').show(); $.ajax({ type: "POST", contentType: "application/json; charset=utf-8", data: '{user:"' + $("#user").val() + '",pass:"' + $("#pass").val() + '"}', url: "URL.asmx/validate", dataType: "json", success: function (data) { $('#id').val(data.d); $('#sajax-loader').hide(); $('#form1').post(); $('#login-notification').show(); }, error: function (err) { $('#login-notification').html("An Error Occured " + err); } }); return false; });
显然这是错误的方法,因为我在提交时没有收到任何回复。
有人可以指导我朝正确的方向发展吗?提供一些关于如何调整我在这里提交函数的建议,或者可能是一种完全不同的更实用的方法?
答案 0 :(得分:3)
开始return false
将停止submit()
函数的执行,此时您return
并且其余代码未执行。因此,请将return false
放在最后。
另外,使用 .preventDefault() 会停止默认表单提交行为。
$('#form1').submit(function(e) {
// instead of return false
// use e.preventDefault()
e.preventDefault();
$('#sajax-loader').show();
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
data: '{user:"' + $("#user").val() + '",pass:"' + $("#pass").val() + '"}',
url: "URL.asmx/validate",
dataType: "json",
success: function (data) {
$('#id').val(data.d);
$('#sajax-loader').hide();
$('#form1').post();
$('#login-notification').show();
},
error: function (err) {
$('#login-notification').html("An Error Occured " + err);
}
});
});
而不是
data: '{user:"' + $("#user").val() + '",pass:"' + $("#pass").val() + '"}',
你可以使用:
data: {user: $("#user").val() ,pass: $("#pass").val() },