【发布时间】:2014-07-03 16:39:20
【问题描述】:
我有这个登录表单,我在其中进行服务器端验证,现在我正在尝试进行 jQuery 验证。
sn-p 形式:
<div class="form-actions">
<button type="submit" class="btn green pull-right">Login <i class="m-icon-swapright m-icon-white"></i></button>
</div>
jQuery sn-p:(我使用bootstrap的login.js)
submitHandler: function (form) {
var un = $('#usernameEmail').val();
var p = $('#pass').val();
$.ajax({
url: '/admin/checkIfUsernameOrEmailExists',
type: 'POST',
data: {un: un, pass: p},
success: function(data){
form.submit();
},
error: function(data){
alert("Error");
}
});
}
函数checkIfUsernameOrEmailExists 运行良好。我在成功函数上做了一个console.log(data)(因为它总是在触发),当它必须为假时数据为假,当必须为真时为真。因此,鉴于这种情况,我对错误可能出在哪里感到困惑。
编辑
我之前尝试过但没有成功,现在我确定理论上它是正确的,正如 Ramesh 和 Keune 建议的那样......但仍然无法正常工作,也许我有什么问题并且没有意识到?没有显示错误,没有登录console.log,也没有出现警报。
submitHandler: function (form) {
var un = $('#usernameEmail').val();
var p = $('#pass').val();
$.ajax({
url: '/admin/checkIfUsernameOrEmailExists',
type: 'POST',
data: {un: un, pass: p},
success: function(data){
if (data) {
form.submit()
}else{
// console.log(data);
alert(data);
};
},
error: function(data){
alert("Error");
}
});
}
解决方案
正如 Blurfus 所说,我错过了“”,因此,在成功函数内部,数据比较应该针对字符串:
success: function(data){
if (data == "true") {
form.submit()
}else{
alert(data);
};
},
【问题讨论】:
-
请求成功时调用success函数。它对您的业务逻辑一无所知。
-
@keune 我现在知道了。谢谢你的提示。无论如何,正如我告诉 RameshKotha 它在成功并且用户可以登录时工作。但如果错误,则不会显示警报消息
-
如果
data是一个对象或一个数组,或者任何真实的东西(例如字符串"false"),它将提交表单。 -
@KevinB 真的吗?什么是错误的正确显示方式? :s
-
返回具有标志的对象的 json 字符串表示,例如
{ "success": false },然后将 dataType 设置为 json。if (data.success) { do stuff }或者,您可以让您的服务器返回非 2xx 状态代码。
标签: jquery ajax twitter-bootstrap validation