2011-12-29 12 views
5

Per gli errori di convalida in Spring MVC Controller, ho impostato l'intestazione personalizzata error nell'intestazione della risposta. Posso accedere a quell'intestazione di risposta in Firefox 3.5. Ma non in IE 8. Gentilmente consiglio, il modo giusto per mostrare il messaggio di errore personalizzato al client Jquery.getResponseHeader restituisce null in IE 8

var jqxhr=$.post("saveAcc.htm",{ data: data}); 

    jqxhr.success(function() { 
     alert("Saved"); 
    }); 

    jqxhr.error(function(thrownError){ 
     fnSetError(jqxhr.getResponseHeader('error')); 
     alert(jqxhr.getAllResponseHeaders()); //returns empty 
     //alert('responseText '+ thrownError.responseText); 
     alert(jqxhr.getResponseHeader('error')); //return null      
     oTable.fnReloadAjax(); 
    }); 
+0

Non so se questo aiuta, ma dare una prova: http://forum.jquery.com/topic/jquery-ajax-ie8-problem, questo un bug report su jquery $ .ajax in IE8, con alcune possibili correzioni. – joao

risposta

0

Se si desidera richiamare la funzione gestore di errori JS, generare un'eccezione sul server.

In alternativa, è possibile impostare il HTTPStatus a 500 o qualche altro stato di errore

response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); 
//response.setStatus(500); 

Ma penso che il tuo approccio è sbagliato. Gli errori di convalida non sono errori di applicazione, è necessario gestirli nel messaggio di successo.

jqxhr.success(function(data) { 
    if(data['validationMessages'].length > 0) { 
     //deal with the validation issues 
    } 
}); 

Questo può aiutare: http://outbottle.com/spring-3-web-mvc-exception-handling-incorporating-ajax/