我有这个登录表单,我在其中进行服务器端验证,现在我正在尝试进行jQuery验证。
表格摘要:
<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片段:(我使用bootstrap&#39; 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所说,我错过了&#34;&#34;因此,在内部成功函数中,数据比较应该是一个字符串:
success: function(data){
if (data == "true") {
form.submit()
}else{
alert(data);
};
},
答案 0 :(得分:1)
我认为你的checkIfUsernameOrEmailExists只是返回TRUE或FALSE。如果它抛出任何错误,那么只会调用jquery错误。另外,它只会成功。如果您想抛出错误,请检查false是否成功并提醒它。
$.ajax({
url: '/admin/checkIfUsernameOrEmailExists',
type: 'POST',
data: {un: un, pass: p},
success: function(data){
if(data){
form.submit();
}else{
alert('Error');
}
},
error: function(data){
alert("Error");
}
});
参考:JQuery Ajax
答案 1 :(得分:1)
如果我理解documentation,您需要在success
回调函数中执行此操作
success: function(data, status, jqXHR){
...
}
是的,我知道其他两个是可选的,但根据功能签名:
Function(PlainObject data, String textStatus, jqXHR jqXHR )
Data
是从服务器返回的对象,根据dataType
参数(您尚未指定)格式化,并且可能的值为xml, json, script, or html
- 但是,它确实尝试用一个聪明的猜测。所以,换句话说,它不能很好地处理布尔值data
(根本没有?)。
我最好的猜测是你必须检查一下String
:
if(data == "TRUE"){
form.submit();
}else{
alert('Error');
}
并且可以另外指定dataType
参数。