如何获取有关jquery ajax错误的更多详细信息?

时间:2016-07-20 11:19:14

标签: jquery ajax

这是我的样本ajax代码。

$.ajax({
    type: 'POST',
    url: validateAjaxURL,
    success: function (data) {                  
        var returnData = data;  
        if (returnData.match("^selectedUno-")) {                                
              $('#new_caregiver_popup_div').dialog('close');    
        } else {
            $("#new_caregiver_popup_div").html(data);
        }
    },
    error: function() {                 
        alert('Unable to contact server');
    }
});

这很好用。但是如果发生错误,它只会发出警告“无法联系服务器”,因此我想获得有关错误的更多详细信息,例如错误类型,错误原因等。我该怎么做?

2 个答案:

答案 0 :(得分:2)

我经常写“错误”函数,如下所示:

function (jQXHR, textStatus, errorThrown) {
    alert("An error occurred whilst trying to contact the server: " + jQXHR.status + " " + textStatus + " " + errorThrown);
}

这是根据http://api.jquery.com/jQuery.ajax/的文件。您可以阅读3个参数以了解更多信息。根据错误的性质,有时它比其他错误信息更多。

另外,根据您的浏览器,查看控制台和开发人员工具中的网络日志记录(大多数浏览器上的F12)也可能会为您提供一些线索。

答案 1 :(得分:1)

我通常使用它,它会给你准确的错误信息:

$.ajax({
type: 'POST',
url: validateAjaxURL,
success: function (data) {                  
    var returnData = data;  
    if (returnData.match("^selectedUno-")) {                                
          $('#new_caregiver_popup_div').dialog('close');    
    } else {
        $("#new_caregiver_popup_div").html(data);
    }
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
                alert("Status: " + textStatus); alert("Error: " + XMLHttpRequest.responseText);
            }
});

这是代码:

<script type="text/javascript">
        $(function () {
            $("#btnValidate1").click(function () {
                var number = $("#txtNumber1").val();
                $.ajax({
                    type: "POST",
                    url: " Default.aspx/ValidateNumber",
                    data: '{number: "' + number + '"}',
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function (r) {
                        alert("Valid number.");
                    },
                    error: OnError
                });
            });
        });
        function OnError(xhr, errorType, exception) {
            var responseText;
            $("#dialog").html("");
            try {
                responseText = jQuery.parseJSON(xhr.responseText);
                $("#dialog").append("<div><b>" + errorType + " " + exception + "</b></div>");
                $("#dialog").append("<div><u>Exception</u>:<br /><br />" + responseText.ExceptionType + "</div>");
                $("#dialog").append("<div><u>StackTrace</u>:<br /><br />" + responseText.StackTrace + "</div>");
                $("#dialog").append("<div><u>Message</u>:<br /><br />" + responseText.Message + "</div>");
            } catch (e) {
                responseText = xhr.responseText;
                $("#dialog").html(responseText);
            }
            $("#dialog").dialog({
                title: "jQuery Exception Details",
                width: 700,
                buttons: {
                    Close: function () {
                        $(this).dialog('close');
                    }
                }
            });
        }
    </script>

这是错误enter image description here

的屏幕截图