8

Currently if I have an error with an ajax request such as submitting a form (I'm using ASP.NET MVC 3) it will show something like 'Internal Server Error'.

But if I do the submit without using Ajax then .net will show the actual server error.

Any ideas on how I could perhaps get the error to show? So my users can report the problem instead of only being able to say 'internal server error'

Thanks

1
  • 4
    Showing actual error messages to users can raise security issues. It's better to give them an ID corresponding to an exception logged in a DB. Commented Nov 7, 2011 at 18:56

2 Answers 2

22

Although I wouldnt recommend showing the user an error number with the actual response error message this is how you can do this by adding the error callback

error: function(xhr,err){
    alert("readyState: "+xhr.readyState+"\nstatus: "+xhr.status);
    alert("responseText: "+xhr.responseText);
}

xhr is XmlHttpRequest.

readyState values are 1:loading, 2:loaded, 3:interactive, 4:complete.

status is the HTTP status number, i.e. 404: not found, 500: server error, 200: ok.

responseText is the response from the server - this could be text or JSON from the web service, or HTML from the web server.

Sign up to request clarification or add additional context in comments.

Comments

6

This code will replace the current page's contents with the error that came back from the ajax request.

jQuery(document).ajaxError(function (event, request, settings) {
    if (request.status === 500) {
        $(document.body).html(request.responseText);
    } else if (request.status === 401) {
        // redirect to login, 401 means session is expired.
        window.location.href = "login page url";
    }
});

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.