在 jquery/ajax 中使用错误函数


Using error function in jquery/ajax

我正在使用jquery在ajax/php中开发连接模块。我需要抛出一个从 php 到 ajax 的异常,以指示电子邮件或密码是否为 false。

我在网上搜索了一种使用jquery的ajax提出的"error"函数的方法。找到了一些解决方案,但没有一个有效。

尝试抛出一个php异常:错误函数没有捕获它;试图通过发送json编码数据来避免使用错误函数:无法在成功函数中使用它...错误功能似乎只捕获服务器错误,这真的不有趣。

任何人都可以帮我找到一种通过 ajax 从 php 传达错误的方法吗?

将 php 响应中的请求状态代码设置为 4XX 或 5XX。这将使您最终进入error/fail回调。

我所做的不一定是列表中的值。例如,您可以创建自己的:

StatusCode: 550
StatusText: "My Custom Error"

如果我没记错的话,在 PHP 中看起来像这样:

header('HTTP/1.0 550 My Custom Error');

最后,将错误详细信息发送给客户端,以通知他们出了什么问题。可以将信息放在标头中,也可以使用json_encode()

<?php
try {
    if (some_bad_condition) {
        throw new Exception('Test error', 123);
    }
    echo json_encode(array(
        'result' => 'vanilla!',
    ));
} catch (Exception $e) {
    echo json_encode(array(
        'error' => array(
            'msg' => $e->getMessage(),
            'code' => $e->getCode(),
        ),
    ));
}
?>

客户端:

$.ajax({
    url: 'page.php',
    data: { 'some_bad_condition': true }
}).done(function(data){
    console.log('success!', data);
}).fail(function(jqXhr){
    var errorObject = $.parseJSON(jqXhr.responseText);
    console.log('something went wrong:', errorObject);
    //jqXhr.status === 550
    //jqXhr.statusText === 'My Custom Error'
});

不要忘记在PHP文件中指定正确的mimetype。这样,jQuery就会知道它是一个JSON响应,而无需你明确指定它。

header('Cache-Control: no-cache, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Content-type: application/json');

尝试使用此插件:

AJAXForm

在这里获取。

ajax 处理表单的提交,如果出现错误,将使用错误回调。

我想我以前用过这个。它非常易于使用,还可以检查您的 php 中的返回状态代码是否正确。