php怎么写能让jq的ajax进入error回调函数

就是我的php执行什么代码,或者输出什么以后,我网页那边用jquery提交的ajax能进入error回调函数,最好是能带信息的那种

阅读 4.1k
4 个回答

在 jQuery 的 $.ajax 方法中,error 回调函数的触发有多种原因,对于服务器而言,就是 4XX5XX 系列的状态码响应即可。

error 回调函数的定义是

error: function (XMLHttpRequest, textStatus, errorThrown) {
    console.log(XMLHttpRequest);
}

我们可以在 XMLHttpRequest 对象中找到本次请求的所有信息,以便我们进行后续处理。

$.ajax 及其 error 回调函数的手册: http://hemin.cn/jq/jQuery.aja...
服务端响应状态码参考: http://www.runoob.com/http/ht...

以下是我写的示例,以供参考:


PHP 代码示例:

// 构建&输出 Response Header 头信息
$code = 500;
$errormessage = 'Internal Server Error';
$status_header = 'HTTP/1.1 ' . $code . ' ' . $errormessage;
header($status_header);

// 输出Response body
$data = array('msg' => 'this is error message');
echo json_encode($data);
exit;

JS 代码示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>jQuery test</title>
</head>
<body>

<button id="click">Click Me</button>

<script src="jquery-1.11.0.min.js"></script>
<script type="text/javascript">
    $('#click').click(function () {
        $.ajax({
            url: 'http://localhost/demo.php',
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                var errorMsg = jQuery.parseJSON(XMLHttpRequest.responseText);
                console.log(textStatus);
                console.log(errorThrown);
                console.log(errorMsg);
            }
        });
    });
</script>

</body>
</html>

最后点击 Click Me 请求服务端的 URL,浏览器 Console 中会显示:

clipboard.png

那么,我想你应该知道怎么应用到自己的代码中了吧

??????

如果只是要进入 error 回调函数,状态码是 4xx, 5xx 都可以

<?php
$code = 400;
$errormessage = 'Bad Request';
$status_header = 'HTTP/1.1 ' . $code . ' ' . $errormessage;
header($status_header);

$data = array('msg'=>'自定义错误信息或数据');
exit(json_encode($data));

怎么处理错误信息,就要你实际操作一波看看了

遇到这种情况,你应该直接打开jq的源码,直接用编辑器搜ajax或者error等相关关键字,你就知道是怎么触发的了。

写错代码不就直接是500了吗

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题