我正在尝试在jquery中创建一个通用函数来处理表单。当我从其余的API获得400响应时,我无法访问错误子句中的表单对象。
在下面的代码中,e.target是表单对象,但是在错误子句中无法访问e,即使使用全局变量,(这不是好办法)也不起作用
$(document).ready(function(){
$('form').validator().on('submit', function (e) {
if (e.isDefaultPrevented()) {
alert("Unexpected , contact admin");// handle the invalid form...
} else {
event.preventDefault();
$.ajax({
url: e.target.action,
method: e.target.method,
data:$(this).serialize(),
success: function(data) {
alert(JSON.stringify(data));
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
if (XMLHttpRequest.status == 0) {
alert(' Check Your Network.');
}else if (XMLHttpRequest.status == 404) {
alert('Requested URL not found.');
}else if (XMLHttpRequest.status == 500) {
alert('Internel Server Error.');
}else if (XMLHttpRequest.status == 400) {// Bad Request
$(e.target).append('<div class="alert alert-danger fade in alert-dismissable"><a href="#" class="close" data-dismiss="alert" aria-label="close" title="close">×</a><strong>Danger!</strong> This alert box indicates a dangerous or potentially negative action.</div>')
}else {
alert('Unknow Error.\n' + XMLHttpRequest.responseText);
}
}
});
return false;
}
});
})
我在$(e.tartget)的错误块中得到的错误是e未定义。
答案 0 :(得分:1)
我不会用e.target来做...检查我的代码片段, 怎么解决它。
通过$(this)
获取当前的对象
$(document).ready(function(){
$('form').validator().on('submit', function (e) {
//Get the target form
var form = $(this);
if (e.isDefaultPrevented()) {
alert("Unexpected , contact admin");// handle the invalid form...
} else {
event.preventDefault();
$.ajax({
url: e.target.action,
method: e.target.method,
data:$(this).serialize(),
success: function(data) {
alert(JSON.stringify(data));
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
if (XMLHttpRequest.status == 0) {
alert(' Check Your Network.');
}else if (XMLHttpRequest.status == 404) {
alert('Requested URL not found.');
}else if (XMLHttpRequest.status == 500) {
alert('Internel Server Error.');
}else if (XMLHttpRequest.status == 400) {// Bad Request
//Append the Error to the targeted form
form.append('<div class="alert alert-danger fade in alert-dismissable"><a href="#" class="close" data-dismiss="alert" aria-label="close" title="close">×</a><strong>Danger!</strong> This alert box indicates a dangerous or potentially negative action.</div>')
}else {
alert('Unknow Error.\n' + XMLHttpRequest.responseText);
}
}
});
return false;
}
});
})
&#13;