0

我已经向我的 login.php 文件写入了一个 ajax 发布请求,其中回显了诸如“不正确”或“成功”之类的内容。

我不太确定如何使用此功能,因为我还想检查失败和东西,然后将文本添加到错误框中..

任何想法?

这是我当前的代码:

$('#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");
        }
    });
});
4

3 回答 3

3

来自jQuery $.ajax() 文档...

从 jQuery 1.5 开始,由 $.ajax() 返回的 jqXHR 对象实现了 Promise 接口,为它们提供了 Promise 的所有属性、方法和行为(有关更多信息,请参阅延迟对象)。这些方法采用一个或多个在 $.ajax() 请求终止时调用的函数参数。这允许您在单个请求上分配多个回调,甚至在请求完成后分配回调。(如果请求已经完成,则立即触发回调。) jqXHR 对象的可用 Promise 方法包括:

jqXHR.done(函数(数据, 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!');
    });
});
于 2013-08-12T16:14:42.500 回答
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/

于 2013-08-12T16:16:10.797 回答
-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();
    });
});
于 2013-08-12T16:13:44.173 回答