2011-07-27 17 views
9

Bir istisna atabilecek bir Java Spring MVC denetleyicim var. Bu hataları işlemek için bir @ExceptionHandler kurulumum var ve istisna mesajını arayan kişiye döndürmek için kullanmak istiyorum.jQuery .error jqXHR.responseText is

sunucu kodu: Ben bir DeviceException atma ve CLI dan Curl kullanarak sonuç alma test ettik

@ExceptionHandler(DeviceException.class) 
    @ResponseStatus(HttpStatus.METHOD_FAILURE) 
    @ResponseBody 
    public String handleException(DeviceException ex) { 
     return ex.getMessage(); 
    } 

, istisnanın mesaj yanıtı gövdesinde iade ediliyor. Ben ancak görüntülemek için jQuery .error işleyicisi alamayan, benim işleyicisi kodudur:

  error: function(jqXHR, textStatus, errorThrown) { 
       // problem, the data is always blank 
       alert('jqXHR.responseText = ', jqXHR.responseText); 
      } 

şimdiye responseText için olsun tüm boş bir dizedir. JQuery hata işleyicisinde görüntülemek için @ExceptionHandler tarafından döndürülen dizeyi nasıl alabilirim? Böyle

+0

IIS Express kullanmak için o projeyi geçerek sabitlendi Bu temel sorunu düzeltin, nasıl olursa olsun herhangi bir yardımı alacağım ne kadar rasgele olursa olsun :) –

+0

Benzer bir problem yaşıyorum. jqXHR.responseText, kromda değil FF 3.6'da ayarlanır. Ben 'uygulama/x-www-form-urlencoded' POSTING ediyorum ve 'uygulama/json' geri alma - bu protokol kırılıyor mu? – rynop

+0

Tam HTTP yanıtını gönderebilir misiniz? –

cevap

0

deneyin şey:

var msg = '<div style="padding:20px;">'; 
msg += "We're sorry, there was an error during your request. Please refresh the page, then try again. If your problem persists, please contact technical support. <br /><br /> <b>Cause:</b> <br /> "; 
switch (textStatus) { 
    case ('timeout'): 
     msg += 'Request timed out.'; 
     break; 
    case ('error'): 
     msg += 'Error status returned.'; 
     break; 
    case ('abort'): 
     msg += 'Request was aborted.'; 
     break; 
    case ('parseerror'): 
     msg += 'There was an error parsing your request.'; 
     break; 
    default: 
     msg += 'No status returned.'; 
     break; 
} 
$(this).html(msg + ' <br /><br /> ' + errorThrown + ' <br /></div>'); 
0

Ben çok benzer bir sorunu vardı ve garip o zor bu yüzden var ben kızıyorum Visual Studio 2012.