Skip to content Skip to sidebar Skip to footer

Handle 500 Error On Form Submit With Js Or Jquery?

I'm using a standard form/action to post to a restful web service, I'm trying not to use ajax due to the size and makeup of the form. Is there a way to attach error handling to the

Solution 1:

Try this:

<form method="post"id="form>

</form>

Ajax code:

$('#form').submit(function () {
  $.ajax({
    url: 'your_url.html',
    data: 'some_data=somevalue',
    success: function (response) {
      // it was a success!
    }
    error: function () {
      // it was an error!
    }
  });
});

Please note you cannot handle the normal submission process! Only ajax requests can be checked by HTTP response. Simple form submit cannot be handled!

You can execute the above code on a submit button click!

Don't wanna use Ajax?

If you don't want to use ajax, then you need to use a server-side code. And check for the HTTP Resonse from the server! If it is 500, then redirect the user to another page! But remember, you cannot use jQuery to check the HttpResponseCode for the default submission process!

It is better if you start learning about web.config. That is the file where you manage the error and other customization of how server responds to the error and other conditions.

Solution 2:

You can handle each type of Ajax error like that

$(function() {
$.ajaxSetup({
    error: function(jqXHR, exception) {
        if (jqXHR.status === 0) {
            alert('Not connect.\n Verify Network.');
        } elseif (jqXHR.status == 404) {
            alert('Requested page not found. [404]');
        } elseif (jqXHR.status == 500) {
            alert('Internal Server Error [500].');
        } elseif (exception === 'parsererror') {
            alert('Requested JSON parse failed.');
        } elseif (exception === 'timeout') {
            alert('Time out error.');
        } elseif (exception === 'abort') {
            alert('Ajax request aborted.');
        } else {
            alert('Uncaught Error.\n' + jqXHR.responseText);
        }
    }
});
});

Solution 3:

After more reading, I found this was possible using a FormData object. This even takes care of the multiselect. Here's the code:

<form id="theForm">
    <input name="text"type="text">
    <select name="fileType">
    ...
    </select>
    <input name="file"type="file">
</form>

The jQuery

$("#theForm").submit(function(e){
    e.preventDefault();
    var theForm = newFormData($(this)[0]);
    $.ajax({
        url: '.../rest/save',
        type: 'POST',
        data: theForm,
        cache, false,
        contentType: false,
        processData: false
    });
    returnfalse;
});

Jersey resource

@POST@Path("/save")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public void save(   
    @FormDataParam("text") String text,
    ....
    @FormDataParam("file") InputStream inputStream,
    @FormDataParam("file") FormDataContentDisposition fileDetail){
        log.info(fileDetail.getFileName());
        // exceptions return 500thrownewServerException(500);
    }

Post a Comment for "Handle 500 Error On Form Submit With Js Or Jquery?"