我已经在我的login.php文件中写了一个ajax post请求,其中包含“不正确”或“成功”等内容。
我不太确定如何使用此功能,因为我还想检查失败和内容,然后将文本添加到错误框中..
有什么想法吗?
这是我目前的代码:
$('#submit').click( function() {
$.ajax({
url: 'login.php',
type: 'post',
dataType: 'json',
data: $('form#loginForm').serialize(),
beforeSend:function(){
launchPreloader();
},
complete:function(){
stopPreloader();
},
success: function(data) {
window.href("chat.php");
}
});
});
答案 0 :(得分:3)
来自jQuery $.ajax() documentation ...
jQuery 1.5中$ .ajax()返回的jqXHR对象实现了 Promise接口,为它们提供所有属性,方法和 Promise的行为(有关更多信息,请参阅Deferred对象)。 这些方法采用一个或多个函数参数 $ .ajax()请求终止。这允许您分配多个 单个请求上的回调,甚至在回调之后分配回调 请求可能已经完成。 (如果请求已经完成,那么 立即触发回调。)jqXHR的可用Promise方法 对象包括:
jqXHR.done(function(data,textStatus,jqXHR){}); 替代方案 构造成功回调选项,.done()方法替换 不推荐使用的jqXHR.success()方法。请参阅deferred.done() 实施细节。
jqXHR.fail(function(jqXHR,textStatus,errorThrown){}); 错误回调选项的替代构造,.fail()方法 替换已弃用的.error()方法。请参阅deferred.fail() 实施细节。
以您的代码为例.....
$('#submit').click( function() {
$.ajax({
url: 'login.php',
type: 'post',
dataType: 'json',
data: $('form#loginForm').serialize(),
beforeSend:function(){
launchPreloader();
},
complete:function(){
stopPreloader();
},
success: function(data) {
window.href("chat.php");
}
}).done(function() {
alert('Done!');
}).fail(function() {
alert('Fail!');
});
});
答案 1 :(得分:1)
当你说检测失败时,我认为你的意思是错误的请求......你可以使用statusCode事件来检测像404错误和500个内部服务器错误,如下所示:
statusCode: {
404: function () {
//console.log('Error: 404: Could not contact server.');
},
500: function () {
//console.log('Error: 500: Server error occurred.');
}
}
所以完整的ajax代码看起来像:
$('#submit').click( function() {
$.ajax({
url: 'login.php',
type: 'post',
dataType: 'json',
data: $('form#loginForm').serialize(),
statusCode: {
404: function () {
//do somethign with error 404
alert('Error: 404: Could not contact server.');
},
500: function () {
//do something with error 500
alert('Error: 500: Server error occurred.');
}
},
beforeSend:function(){
launchPreloader();
},
complete:function(){
stopPreloader();
},
success: function(data) {
window.href("chat.php");
}
});
});
Jquery ajax页面提供了'statuscode'属性的说明http://api.jquery.com/jQuery.ajax/
答案 2 :(得分:-1)
你可以用这个:
$('#submit').click( function() {
launchPreloader();
$.post({
url: 'login.php',
dataType: 'json',
data: $('form#loginForm').serialize()
}).done(function(data) {
// If the post request was successful
stopPreloader();
window.href("chat.php");
}).fail(function(error) {
// If there was an error with this request
stopPreloader();
});
});