使用JS或jQuery处理表单提交时出现500错误?

我正在使用标准表单/动作发布到一个宁静的Web服务,我试图不使用ajax,因为表单的大小和构成。 有没有办法将error handling附加到表单提交? 请参阅下面的当前代码。

$("#theForm").submit(function(e){ // Can anything be done to handle 500s here? });

这是rest服务。

 @POST @Path("/save") @Consumes(MediaType.MULTIPART_FORM_DATA) public void save( @FormDataParam("iD") Integer iD, .... @FormDataParam("file") InputStream inputStream, @FormDataParam("file") FormDataContentDisposition fileDetail { // void to avoid redirect // exceptions return 500 throw new ServerException(500); } 

试试这个:

 

您可以像这样处理每种类型的Ajax错误

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

经过更多阅读后,我发现使用FormData对象是可行的。 这甚至可以处理多重选择。 这是代码:

      

jQuery

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

泽西岛资源

 @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 500 throw new ServerException(500); }