2010-09-29 165 views
4

我遇到了一些问题,通过.ajax错误从控制器捕获错误消息。该脚本由jQuery UI对话框弹出。任何帮助,将不胜感激。asp.net mvc .ajax错误捕获

下面是从我的控制器

  Response.StatusCode = (int)HttpStatusCode.BadRequest; 
      return Content("There was an error in your request.", MediaTypeNames.Text.Plain); 

的代码段,这里的jQuery脚本:

function submitFormWithAjax(form) { 
    form = $(form); 
    $.ajax({ 
     url: form.attr('action'), 
     data: form.serialize(), 
     type: (form.attr('method')), 
     dataType: 'text', 
     error: function(data) { 
      $('#result').html(data); 
     }, 
     success: function(data) { 
      $('#result').html(data); 
      setTimeout("reloadPage()", 500); 
     } 
    }); 
    return false; 
} 

error: function(data)不读书返回的错误信息。有什么建议么?

回答

1

错误回调的签名是function(xmlHttpRequest, textStatus, exceptionThrown)

也许您正在查看错误的参数?

+0

谢谢,我改变了代码错误:功能(xmlHttpRequest,textStatus,exceptionThrown),我可以访问xmlHttepRequest。但是,如何在控制器中附加我的错误消息?我想返回内容(“您的请求有错误”,MediaTypeNames.Text.Plain);是不正确的。 – Dean 2010-10-01 13:28:55

+0

我对ASP.NET MVC并不熟悉,但我的猜测是你必须返回一个View。这就是我迄今为止所能提供的。 – Thomas 2010-10-01 13:43:59

1

试试这个:

function submitFormWithAjax(form) { 
    form = $(form); 
    $.ajax({ 
     url: form.attr('action'), 
     data: form.serialize(), 
     type: (form.attr('method')), 
     dataType: 'text', 
     error: function(data) { 
      $('#result').html(data); 
     }, 
     success: function(xmlHttpRequest, textStatus, exceptionThrown) { 
      $('#result').html(xmlHttpRequest.statusText); 
      setTimeout("reloadPage()", 500); 
     } 
    }); 
    return false; 
} 
1

它必须是一些关于返回一个错误请求(错误400)错误回调似乎被调用时,返回的代码是Conflic(错误409)。

3

感谢大家的帮助。我想通了一些尝试后,所有我需要做的就是这个jQuery的

error: function(xhr, textStatus, exceptionThrown) { 
     $('#result').html(xhr.responseText); 
    }, 

,这在控制器

  Response.StatusCode = (int)HttpStatusCode.BadRequest; 
      return Content("There was an error in your request."); 

干杯

+0

问题在于如果在处理过程中出现异常,完整的错误页面html将被转储到您的结果div中。 – UpTheCreek 2010-11-04 11:48:28