jquery – 如何在MVC3中的Ajax.BeginForm的OnFailure中显示错误消息?

前端之家收集整理的这篇文章主要介绍了jquery – 如何在MVC3中的Ajax.BeginForm的OnFailure中显示错误消息?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在我的MVC3应用程序中有这个简单的ajax表单,它发送电子邮件
  1. @using (Ajax.BeginForm("SendMessage",new AjaxOptions {
  2. LoadingElementId = "wait",OnSuccess = "loadMessages",OnFailure = "showError" }))
  3. {
  4. <input type="text" name="message" placeholder="Message" />
  5. <input type="submit" name="submit" value="Send" />
  6. }

如果操作无法发送消息,则会抛出异常.异常被处理并显示在showError(error){} javascript函数中:

  1. function showError(error) {
  2. $("#error").text(error.responseText);
  3. };

问题是:error.responseText是整个错误页面的html转储.

我只需要显示异常错误消息(不管MVC3中的exessMessage是什么).

“public ActionResult SendMessage(string message){}”的实现是无关紧要的.

我需要知道如何仅在showError(错误)javascript处理程序中显示异常的消息.

感谢一堆

  1. [HttpPost]
  2. public ActionResult SendMessage(string message)
  3. {
  4. MailMessage mail = new MailMessage();
  5. SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
  6. mail.From = new MailAddress("sender@gmail.com");
  7. mail.Subject = "Some Message";
  8. mail.Body = message;
  9. mail.To.Add("recepient@gmail.com");
  10. SmtpServer.Send(mail);
  11. return null;
  12. }

解决方法

您无法处理OnFailure方法中的每个异常.因为如果响应状态不在200范围内,则调用 OnFailure .所以你可以处理你的场景:
  1. [HttpPost]
  2. public ActionResult SendMessage(string message)
  3. {
  4. MailMessage mail = new MailMessage();
  5. ActionResult response = null;
  6. SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
  7. mail.From = new MailAddress("sender@gmail.com");
  8. mail.Subject = "Some Message";
  9. mail.Body = message;
  10. mail.To.Add("recepient@gmail.com");
  11. try
  12. {
  13. SmtpServer.Send(mail);
  14. response = Content("Success");
  15. }
  16. catch (Exception ex)
  17. {
  18. response = Content(ex.Message);
  19. }
  20. return response;
  21.  
  22. }

在这个代码如果邮件发送成功,那么我已经返回响应“成功”否则我已经返回了实际的错误,在javascript我已经处理了这样的回应:

  1. function loadMessages(error) {
  2. if (error == 'Success') {
  3. alert("Mail Sent successfully");
  4. }
  5. else {
  6. $("#error").text(error);
  7. }

希望这将有助于您.

猜你在找的jQuery相关文章