检查ajax请求中的失败和成功

时间:2013-08-12 16:11:07

标签: php javascript jquery ajax

我已经在我的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");
        }
    });
});

3 个答案:

答案 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();
    });
});