0

我知道在 jQuery ajax 中有检测错误的工具,但我想要的是如何描述问题所在?404,没有互联网连接,内部服务器错误或其他什么?

这是我的简单程序

<script type="text/javascript" charset="utf-8" src="http://jquery.local/jquery-1.7.2.min.js"></script>

<script>
    function Create_new_event ()
    {
        url = "missing.php";

        $.post(url, {
        }, function(hasil) {
            alert (hasil);
        });
    }

    $(document).ajaxError(function(event, request, settings) {
        // I believe in this area I should put my code to detect problem
    });

</script>

<button onClick="Create_new_event ();">Send</button>
4

3 回答 3

3

这是一个例子:

$(document).ajaxError(function(e, x, settings, exception) {
            var message;
            var statusErrorMap = {
                '400' : "Server understood the request but request content was invalid.",
                '401' : "Unauthorised access.",
                '403' : "Forbidden resouce can't be accessed",
                '500' : "Internal Server Error.",
                '503' : "Service Unavailable"
            };
            if (x.status) {
                message =statusErrorMap[x.status];
                                if(!message){
                                      message="Unknow Error \n.";
                                  }
            }else if(exception=='parsererror'){
                message="Error.\nParsing JSON Request failed.";
            }else if(exception=='timeout'){
                message="Request Time out.";
            }else if(exception=='abort'){
                message="Request was aborted by the server";
            }else {
                message="Unknow Error \n.";
            }

            alert(message);
});
于 2013-02-02T11:25:12.637 回答
1

是的,你可以用thrownError参数来实现,这样做:http: //jsfiddle.net/XJ7L2/

 function Create_new_event() {
   url = "missing.php";

   $.post(url, {}, function (hasil) {
       alert(hasil);
   });
 }
 $(function () {
   $('button').click(function(){
     Create_new_event();
   });
   $(document).ajaxError(function (event, request, settings, thrownError) {
     console.log(request.status  + ' : ' + thrownError);
   });
 });

发生 HTTP 错误时,thrownError接收 HTTP 状态的文本部分,例如"Not Found""Internal Server Error."

于 2013-02-02T11:23:39.223 回答
1

如果您查看request参数包含的内容 ( console.log( request );),您会看到响应代码在 中request.status,文本描述在 中request.statusText

所以是这样的:

$(document).ajaxError(function(event, request, settings) {
    console.log( 'Server returned '+request.status+': '+request.statusText );
});

演示:http: //jsfiddle.net/FSfEh/

于 2013-02-02T11:24:49.960 回答